検索検索でワイルドカードに一致する複数のフォルダを除外する方法

検索検索でワイルドカードに一致する複数のフォルダを除外する方法

次の方法を使用して、 '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そのポイントに一致するエントリのパス名を印刷し続けます。

おすすめ記事