![특정 파일이 포함된 디렉터리 삭제](https://linux55.com/image/7004/%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EC%82%AD%EC%A0%9C.png)
특정 파일이 포함된 모든 디렉터리를 찾아 해당 디렉터리를 삭제하고 싶습니다. 그리고
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
누구든지 이것에 문제가 있다고 생각되면 알고 싶습니다.