이전의 많은 논의에 따라 제거를 수행하려고 했습니다.찾기 및 삭제
그러나 나의 시도는 다른 경험을 가져왔습니다.
find . -type d -name "koko" -exec rm -rf {} \;
지정된 폴더를 삭제 koko
했지만 오탐지가 발생함
find: ./koko: No such file or directory
내 터미널에 문제가 있을 수 있습니다.
를 사용하고 있는데 tcsh
find -delete
로 전환하면 제대로 작동하지 않습니다.
스냅샷입니다
답변1
-prune
에서 제안된 옵션을 사용하는 경우이것답변, 오류 메시지는 나타나지 않습니다.
위의 답변을 인용하면,
-prune
삭제하려는 디렉토리에 사용하면 해당 디렉토리에서 파일을 찾으려고 애쓰지 않도록 find에 지시합니다.
시험
mkdir koko
cd koko
touch file{1,2}
cd ..
find . -type d -name "koko" -prune -exec rm -rf {} \;
위의 find
명령을 실행한 후 오류 없이 프롬프트가 표시됩니다. 그러나 해당 옵션을 사용하지 않으면 -prune
언급한 것과 동일한 오류가 발생합니다.
답변2
문제는 find
선택 사항과 일치하는 디렉터리를 찾은 다음 명령을 실행하는 것입니다. 그러나 find
디렉토리 트리를 통해 재귀하는 자연스러운 작업을 수행하려고 하면 방금 찾은 디렉토리가 사라졌습니다! 따라서 오류 메시지가 나타납니다.
옵션을 제공하여 이 문제를 해결할 수 있습니다 --depth
.디렉터리 자체보다 먼저 각 디렉터리의 내용을 처리합니다.. 매뉴얼 페이지에는 -delete
위에서 언급한 이유로 이 옵션도 암시되어 있다고 언급되어 있습니다.