나는 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
대신 사용하세요.