-prune
차 알려줍니다 find
디렉토리 아래에 같이 Recurse에 없습니다.
find -L -path ~/.wine/dosdevices -prune -o -type f -name 'My Favorite Movie.*' -print
당신이 사용하려는 경우 -lname
당신의 상태에서, 당신은 사용할 수 -L
있기 때문에, 옵션을 -L
원인 대부분의 술어가 포함 링크의 대상에 작용 -lname
. 이 경우 필자는 홈 디렉토리와 하드 디스크 루트를 모두 검색의 루트로 사용하는 것이 좋습니다.
find ~ /mnt/hdd -xtype f -name 'My Favorite Movie.*'
당신은 실행할 수있는 find ~ -type l …
심볼릭 링크의 목록을 수집하고, 추가 뿌리로 사용.
( IFS=$'\n'; set -f;
find ~ $(find ~ -type l -lname '/mnt/hdd/*') \
-xtype f -name 'My Favorite Movie.*' )
심볼릭 링크 아래에서 실제로 재귀를 원하면 이름 대신 대상별로 특정 심볼릭 링크를 제외 할 수 있습니다. 그러나 이런 식으로 패턴이나 하위 트리가 아닌 유한 목록 만 제외 할 수 있습니다.
find -L \( -samefile /exclude/this -o -samefile ~/and/that \) -prune -o \
-type f -name 'My Favorite Movie.*' -print
! -writable
(쓰기 권한이없는 파일) 과 같은 다른 기준을 사용할 수 있지만 GNU find에는 대상 텍스트가 특정 표현식과 일치하는 경우에만 심볼릭 링크에서 재귀하는 방법이 없다고 생각합니다.
find
충분한 심볼릭 링크를 제외하지 않고 거의 원하는 것을 수행 하는 명령을 빌드하고 find2perl 을 실행 하여 쿼리를 Perl 스크립트로 변환 한 다음 Perl 스크립트를 약간 조정할 수 있습니다. 그러나 find2perl이 인식하지 못하는 많은 GNU find 스위치가 있습니다.
-prune
내가 찾던 것입니다. 나는 내가find ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
따르고 싶지 않은 모든 심볼릭 링크 를 나열했습니다. 이제 해당 쿼리를 사용하여 정리하는 방법을 찾고 있습니다.