이 질문에 이미 답변이 있습니다. :
댓글
다섯 개의 질문 : 약간 혼란 스러울 수 있습니다. 또한 stackoverflow에 대한이 는 ' 사용하기가 그렇게 성가신 이유를 설명합니다.
속임수 일지라도 여기서 가장 좋은 대답은 " 올바른 " 질문에 대한 최선의 대답보다 명확합니다.
흠, " find -prune은 ' 저에게 적합하지 않습니다. " 확실한 소리 " 검색 결과에서 디렉토리를 제외하려면 어떻게해야합니까? " 나에게 …
@SamB 동의 함 , 이것은 ' 중복 될 수 없습니다.
답변
-prune
옵션의 용도는 다음과 같습니다.
find . -type d -name "avoid_this_directory_please" -prune -o -type f -print
기본적으로 “디렉터리가있는 경우”라고 표시됩니다. 이름이 avoid_this_directory_please
이면 입력하지 마십시오. 그렇지 않으면 “일반 파일 인 경우 경로 이름을 인쇄하십시오”.
설명
-
find . \( -type d -name 'avoid_this_directory_please' -prune \) -o \( -type f -print \)
와 약간 다르게 똑같은 내용을 작성하려고했지만 구문이 더 좋습니다. 감사합니다.
- @TimKennedy
find . -type d \( -name "A" -o -name "B" \) -prune -o -type f -print
를 수행하려면 괄호가 필요할 것입니다.
- 좋은 지적입니다. 저는 ' 괄호를 사용하여 언제 어디서 배웠는지조차 모릅니다. 그 나이는 시간의 안개 속에서 사라졌습니다. 🙂
- 물론 최상위 디렉토리뿐만 아니라 트리의 모든 디렉토리에서
avoid_this_directory_please
라는 디렉토리를 제거합니다. -path
는 맨 페이지 ( Xen2050에 의해 아래 인용 ) 상태.
-
-prune
가 첫 번째 인수 (-type
포함)는 find / -type f -path /proc -prune -o -name foo -print
를 사용하여 디렉토리를 정리하는 데 실패했습니다. 동일한 명령에서 -type d
와 -type f
를 모두 보는 것이 저를 클릭하게 만든 이유입니다. 이제 드디어 find
사용에 자신감을 갖게되었습니다. 감사합니다.
Answer
디렉토리를 피하려면 -path 테스트를 시도하십시오.
find . -type f ! -path "*/avoid_this_directory_please/*"
댓글
답변
man find
의 -path
섹션에서 다른 2 개의 답변을 결합한 것으로 보입니다
To ignore a whole directory tree, use -prune rather than checking every file in the tree. For example, to skip the directory `src/emacs" and all files and directories under it, and print the names of the other files found, do something like this: find . -path ./src/emacs -prune -o -print
답변
사용해보기
find -name "*.js" -not -path "./directory/*"
댓글