"-not -path "*/FolderName/*""을 사용하는 경우 "find"가 디렉터리를 탐색합니까?

"-not -path "*/FolderName/*""을 사용하는 경우 "find"가 디렉터리를 탐색합니까?

나는 find "/home/../.." -type f -not -path "*/FolderName/*"무시하는 데 익숙하다폴더 이름포함되는 것부터. 그러나 나는 find여전히 이것을 반복하고 있다는 것을 읽었습니다.폴더 이름. 위의 명령을 사용하여 이 폴더의 파일을 검색하면 파일이 나열되지 않으므로 해당 폴더가 아직 탐색되고 있는지 확실하지 않습니다. -prune실제로 순회된 폴더를 무시한다고 하는데 그게 -prune정말 필요한지 잘 모르겠습니다.

답변1

( 암시 -depth적으로 ), , , , (이제 옵션으로 대체됨), , , / 조건자(모든 구현이 이들 모두를 지원하는 것은 아님)는 디렉터리 순회에 영향을 미치는 유일한 조건자입니다.-delete-depth-prune-maxdepth <n>-depth [+-]<n>-follow-L-quit-exit-xdev-mount

대신 여기

... ! -path '*/whatever/*' ...

넌 할 수있어:

... \( ! -name whatever -o -prune \) ...

또는 직접 제외하려는 경우 whatever(그러나 ! -path '*/whatever/*'작동하지 않음):

... -name whatever -prune -o \( ... \)

삽입해야 하는 것들앞으로와 같은 술어 -type f.

이는 또한 *일부 로케일 및 일부 구현(대부분의 일반적인 로케일의 GNU와 같은)에서 문자로 변환되지 않는 바이트 시퀀스 불일치 문제를 방지합니다.find

귀하의 예를 들면 다음과 같습니다.

find "/home/../.."  \( ! -name FolderName -o -prune \) -type f -print

또는:

find "/home/../.." -name FolderName -prune -o \( -type f -print \)

FolderName( 유형이 아닌 파일도 포함 하여 이름이 지정된 모든 파일은 제외됩니다.목차).

답변2

예.

find-not -path경로가 사용되었거나 필터링된 경우에도 지정된 경로 아래의 모든 내용이 입력되고 반복됩니다 ! -path.

-path이는 술어가 순회에 영향을 주지 않기 때문입니다 find. 발견된 경로 이름의 필터링에만 영향을 미칩니다.

find특정 경로로의 하강을 방지하려면 -prune대신 사용하세요.

관련 정보