각 하위 디렉터리의 특정 폴더를 비우세요.

각 하위 디렉터리의 특정 폴더를 비우세요.

파일 시스템에 데이터를 입력하는 동안 일부 파일이 잘못된 디렉토리에 들어갔습니다. 이제 해당 하위 디렉토리의 다른 폴더에 있는 파일을 건드리지 않고 특정 이름을 가진 모든 폴더를 재설정해야 합니다. 모든 디렉토리를 지우고 싶기 때문에같은 이름가능하다고 생각하는데, 안타깝게도 어떻게 해야 할지 모르겠습니다.

나는 다음과 같은 구조를 가지고 있습니다 :

dir

   subdir1

       folder_I_want_to_empty   //all of these folders have the same name

           file_that_needs_to_be_deleted.txt

       folder_I_do_not_want_to_empty   

           file_that_has_to_remain.txt

   subdir2

       folder_I_want_to_empty   //all of these folders have the same name

           file_that_needs_to_be_deleted.txt

       folder_I_do_not_want_to_empty

           file_that_has_to_remain.txt 

   subdir3

       folder_I_want_to_empty   //all of these folders have the same name

           file_that_needs_to_be_deleted.txt

       folder_I_do_not_want_to_empty

           file_that_has_to_remain.txt

클리어 방법폴더_원함_비어있음폴더를 삭제하거나 폴더 안의 데이터를 삭제하지 않고 명령 프롬프트를 통해 각 디렉터리에폴더_I_do_not_want_to_empty?

답변1

당신은 그것을 사용할 수 있습니다

rm -fr */folder_I_want_to_empty/* */folder_I_want_to_empty/.??*

이 명령은 매우 파괴적이며 메시지를 표시하지 않지만 자비 없이 비대화형으로 삭제됩니다.

삭제되는 내용을 보려면 rm -fr다음으로 바꾸십시오 ls -ld.

ls -ld */folder_I_want_to_empty/* */folder_I_want_to_empty/.??*

.작은 활자체: 위에 사용된 패턴으로 인해 두 문자(첫 번째 문자는 점)만 있는 파일이나 폴더는 삭제될 가능성이 적습니다. 이것이 문제가 되는 경우 댓글로 알려주시면 패턴을 조정하겠습니다.

답변2

나는 이것을 할 수도 있습니다. 내 예에서는 테스트를 위해 /test 디렉터리를 설정했습니다.

find /test -type d -iname folder_I_want_to_empty -print0 | xargs -0 -I % find % -type f -print -delete

먼저 ( ) find디렉토리를 호출했습니다 . 그런 다음 각 파일에 대해 xargs가 해당 디렉토리에 있는 파일을 찾아 이름을 인쇄한 다음 삭제하도록 했습니다. 아래 하위 디렉토리는 삭제되지 않지만 귀하의 경우에는 삭제가 불가능합니다. -type dfolder_I_want_to_emptyfolder_I_want_to_empty

다음은 독자가 재현할 수 있는 dockerfile의 예입니다.

FROM debian
RUN mkdir -p /test
WORKDIR /test
RUN mkdir -p subdir1/folder_I_want_to_empty subdir2/folder_I_want_to_empty subdir1/folder_I_do_not_want_to_empty subdir2/folder_I_do_not_want_to_empty && \
    find /test -mindepth 2 -maxdepth 2 -type d -print0 | xargs -0 -I % touch %/test1 %/test2
ENTRYPOINT [ "/bin/sh" ]
CMD [ "-c" , "find /test -type d -iname folder_I_want_to_empty -print0 | xargs -0 -I % find % -type f -print -delete; find /test -type f" ]

관련 정보