서버 디렉터리와 모든 사용자 폴더에 있는 모든 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/"