私は ".git"ディレクトリを見つけましたが、いくつかのパスや "find -not"の仕組みを無視します。

私は

find -not がどのように動作するか理解していません。

ツリー内のすべての.gitディレクトリを探したいとしましょう。

find -type d -iname .git

問題ありません。しかし、含めたくないディレクトリがあるとしましょう。問題がある場合は、そのディレクトリを「以前」および「バックアップ」と呼ぶことができます。

grep -v にパイプすると正常に動作します。

find -type d -iname .git | grep -v old | grep -v backup

しかし、findのマニュアルページを調べたときに-notがあることがわかりましたが、それがどのように機能するのかわかりません。

私はこれを試しましたが、彼は古いディレクトリを除外しません。

find -type d -iname .git -not -iname old 

find-notはどのように機能しますか?問題を見つけるために使用できますか?

ベストアンサー1

findはこの状況を処理するのにはもっと複雑です。

式に以外の操作が含まれていない場合、-prune-printがtrueのすべてのファイルが実行されます。

したがって、必要な部分を明示的に印刷してください。

find -type d \( -iname old -prune -o -iname backup -prune -o -iname .git -print \)

古いツリーとバックアップツリーの両方を検索しないでください。

おすすめ記事