찾기를 사용하여 파일 삭제 및 파일 제외

찾기를 사용하여 파일 삭제 및 파일 제외

이 명령은 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종료될 때까지 기다려야 한다는 것입니다. 따라서 제거할 항목은 많지만 정리할 검색 공간이 많지 않은 경우에는 이 방법이 적합하지 않을 수 있습니다.

관련 정보