Linux

在所有目錄中查找 zip 文件,但排除某些文件夾

  • January 25, 2021

我也想查看/home伺服器上目錄中的所有 zip 文件以及所有使用者文件夾,但我想排除客戶端目錄中可能存在或不存在的'.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

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

引用自:https://unix.stackexchange.com/questions/630905