すべてのディレクトリで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

おすすめ記事