모든 디렉터리에서 zip 파일을 찾고 특정 폴더는 제외합니다.

모든 디렉터리에서 zip 파일을 찾고 특정 폴더는 제외합니다.

서버 디렉터리와 모든 사용자 폴더에 있는 모든 zip 파일을 보고 싶지만 ' 및 클라이언트 디렉터리에 존재할 수도 있고 존재하지 않을 수도 있는 폴더를 /home제외하고 싶습니다.'.composer/'vendor/'

내가 첫번째 야:

find . -iname \*.zip -prune -o -path "./composer*/*" 

하지만 예상대로 작동하지 않았습니다

돌아오기 전:

./pescador/.composer/cache/files/mpdf/mpdf/30bed8bf2e5584fafe3dd19a2fb7d17e522e7402.zip
./pescador/.composer/cache/files/mpdf/mpdf/04966b62554c455cb7639829734133fbc0ad3228.zip

하지만 .trash에서도 검색하고 싶기 때문에 모든 도트 디렉터리를 제외할 수는 없습니다.

답변1

find . -path './composer*' -prune -o -iname '*.zip' -print

./composer-foo.ZIP예 를 들어 나열되지는 않지만

이렇게 하려면 다음과 같이 말할 수 있습니다.

find . '(' ! -path './composer*' -o -prune ')' -iname '*.zip'

-prune디렉토리에 들어가지 말라고 지시 find하므로 스크립트하려는 디렉토리에 적용하려고 합니다. 그리고 -print나열하려는 파일(작업 조건자가 지정되지 않은 경우( -prune그리고아니요작업 술어), -print전체 표현식과 일치하는 파일에 대한 암시적 작업 추가).

.composer그러나 여기서는 이름이 로 시작하는 현재 작업 디렉터리의 직접 하위 디렉터리가 아닌 디렉터리가 호출될 때마다 건너뛰기를 원하는 것 같습니다 composer.

find . -name .composer -prune -o -iname '*.zip' -print

또는 다음 디렉터리를 건너뛸 수도 있습니다 vendor.

find . '(' -name .composer -o -name vendor ')' -prune \
       -o -iname '*.zip' -print

답변2

grep의 -v 플래그를 사용하여 원치 않는 결과를 제외할 수 있습니다.

# find /home -iname *.zip|grep -v "./composer"|grep -v "vendor/"

관련 정보