find
명령이 수행되는 것을 확인했습니다.아니요이 옵션을 사용하는 경우 -prune
하위 디렉터리에 놓습니다. find가 하위 디렉토리로 재귀하도록 지시하면서 일부 항목도 무시하도록 하려면 어떻게 해야 합니까?
/var/lib/foo
특히, 디렉토리를 검색하되 이름이 이라는 디렉토리는 제외하고 싶습니다 .snapshot/
.
sudo find /var/lib/foo -prune -name '.snapshot'
위의 경우 .snapshot을 올바르게 무시하지만 하위 디렉터리로 이동하지는 않습니다. 참고로 저는 CentOS 6.3 호스트의 bash에서 작업하고 있습니다.
답변1
다음을 수행해야 합니다.
sudo find /var/lib/foo -name '.snapshot' -prune -o -print
".snapshot"이라는 이름이 아닌 모든 항목을 인쇄하며, ".snapshot"이 디렉터리인 경우 디렉터리에 들어가지 않습니다.
왜? "-prune"은 작업("-print"는 또 다른 작업이므로)이므로 하위 디렉터리에서 아래로 더 이상 이동하는 것을 방지하는 것 외에는 아무 작업도 수행하지 않습니다. 항상 "true"를 반환하므로 여기에서 ( -name ... -prune )은 파일이나 디렉터리의 이름이 "..."이고 다른 모든 것을 원할 경우에만 true입니다. 즉 - o (-print)입니다.