サーバーディレクトリとすべてのユーザーフォルダにあるすべての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/"