이 명령은 DWIM 표준을 준수하지 않습니다.
find . \( -name .svn -prune -false \) -o \( -empty -delete \)
find: The -delete action atomatically turns on -depth, but -prune
does nothing when -depth is in effect. If you want to
carry on anyway, just explicitly use the -depth option.
-depth
효과를 추가하면 효과가 비활성화됩니다 -prune
. 즉, .svn
디렉터리도 제거됩니다. find
따라서 다른 도구를 사용하지 않고 일부 다듬어지지 않은 경로를 다듬은 다음 삭제하는 데 사용할 수 있는 구문(있는 경우)은 무엇 입니까 rm
?
답변1
을 사용할 수 있습니다 -path
. POSIX는 아니지만 많은 구현에서 지원됩니다.
find . \! -path "*/.svn/*" -empty -delete
-regex
또한 옵션입니다.
답변2
공백이 문제가 되지 않는다면 이와 같은 것이 문제가 될 것입니다.
find . \( -name .svn -prune -false \) -o -print | tac | xargs -L rm -f
이 접근 방식의 장점은 피하려는 트리 부분이 클 -prune
때 엄청난 성능 향상을 가져온다는 것 입니다. 단점은 -delete가 리프를 보는 즉시 항목을 삭제하지만 명령은 find
종료될 때까지 기다려야 한다는 것입니다. 따라서 제거할 항목은 많지만 정리할 검색 공간이 많지 않은 경우에는 이 방법이 적합하지 않을 수 있습니다.