find -type f
특정 시작 디렉터리에서 모든 파일을 재귀적으로 찾는 명령을 사용하고 있습니다 . 그러나 특정 디렉터리를 입력하고 그 안에 있는 파일 이름을 추출하는 것을 방지하고 싶습니다. 그래서 기본적으로 다음과 같은 것을 찾고 있습니다.
find . -type f ! -name "avoid_this_directory_please"
유효한 대안이 있습니까?
답변1
이 옵션의 목적은 다음과 같습니다 -prune
.
find . -type d -name 'avoid_this_directory_please' -prune -o \
-type f -print
위의 내용을 "라는 이름의 디렉토리가 있으면 avoid_this_directory_please
입력하지 말고, 그렇지 않은 경우 일반 파일이면 해당 경로 이름을 인쇄하십시오"로 해석할 수 있습니다.
최상위 검색 경로의 전체 경로 이름과 같은 다른 기준에 따라 디렉터리를 정리할 수도 있습니다.
find . -type d -path './some/dir/avoid_this_directory_please' -prune -o \
-type f -print
답변2
디렉토리 사용을 피하려면 -path 테스트를 시도하십시오.
find . -type f ! -path '*/avoid_this_directory_please/*'
답변3
에서 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
답변4
이 시도
find -name "*.js" -not -path "./directory/*"