次の方法を使用して、 'tmp'と 'logs'で始まるフォルダを除いて、 '/app/test'ディレクトリ内のすべてのファイルとフォルダを見つけたいと思います。prune
だから私は次のコマンドを試しました。
find /app/test -type d \( ! -name logs* \) -o \( ! -name log \) -o \( ! -name tmp* \) -o
\( ! -name tmp \) -prune | tee /tmp/findall.log
ただし、次のように検索結果に含まれる最上位フォルダが表示されます。
/app/test/Admin/tmp/data/pm.trp
/app/test/Admin/tmp/wond/iqc.log
etc ...
何か提案してもらえますか?
ベストアンサー1
ファイル名ワイルドカードを含む単語を引用しないことに加えて、すべてのテストの意味を反転して、ファイル名-name
ワイルドカードを含む名前を切り取りました。いいえ検索ツリーでこれらの名前とパターンを一致させます。
代わりに:
find /app/test -type d \
\( -name 'logs*' -o -name log -o -name 'tmp*' -o -name tmp \) -prune -o \
-print | tee /tmp/findall.log
-prune
それ以外の場合、テストは-print
そのポイントに一致するエントリのパス名を印刷し続けます。