특정 파일이 포함된 디렉터리 삭제

특정 파일이 포함된 디렉터리 삭제

특정 파일이 포함된 모든 디렉터리를 찾아 해당 디렉터리를 삭제하고 싶습니다. 그리고

find . -name thatcertainfile -execdir pwd \;

삭제할 모든 디렉터리 목록을 얻었습니다. 그런데 즉시 모든 디렉터리를 삭제하려면 어떻게 해야 합니까? 파일 자체뿐만 아니라 전체 디렉토리를 삭제하고 싶습니다.

find . -name thatcertainfile -exec rm -r {} \;

답변1

다음 명령을 시도해 보세요.

rm -rf $(find . -name thatcertainfile -execdir pwd \;)

rm -rf삭제해야 할 내용이 명령의 출력임을 알려야 합니다 . 예를 들어, 명령의 출력이 /home/guest/Documents내가 보여준 것과 같다 면 rm -rf /home/guest/Documents.

답변2

파일 경로가 주어지면 ./some/where/thatcertainfile마지막 파일을 제거하여 /thatcertainfile디렉터리 경로를 가져옵니다. 경로에서 문자열 작업을 사용할 수 있도록 셸을 시작합니다.

find . -name thatcertainfile -exec sh -c 'rm -r "${0%/*}"' {} \;

또는 zsh를 사용하십시오. 경로를 포함하는 디렉토리의 이름으로 변환하려면 다음을 사용하십시오.:h 기록 수정자통해글로벌 예선.

rm -rf **/thatcertainfile(N:h)

(물론 실행하기 전에 테스트해 보세요 rm!)

답변3

파이프라인은 작업을 수행할 수 있어야 하며 이름에 공백이 있는 디렉터리의 영향을 받지 않아야 합니다.

find . -name thatcertainfile -print0 | xargs --null dirname -z | xargs --null rm -r

누구든지 이것에 문제가 있다고 생각되면 알고 싶습니다.

관련 정보