grep: --exclude-dir が機能しない

grep: --exclude-dir が機能しない

grepDebian/procでは、または/sys。しかし、以下を使用すると:

 --exclude-dir=/proc

または

--exclude-dir={/proc,/sys}

または

--exclude-dir=/proc --exclude-dir=/sys

それからそれはgrepまだ読まれ、/sysしたがって衝突します。それでは、grepスキップ/procとディレクトリをどのように知ることができますか/sys

ベストアンサー1

--exclude-dirGNUマニュアルの文書grepによると

--exclude-dir=GLOB

名前サフィックスがパターンと一致するすべてのコマンドラインディレクトリはスキップされますGLOB。再帰的に検索するときは、デフォルト名と一致するサブディレクトリをスキップしますGLOB。追加の末尾のスラッシュは無視されますGLOB

ご覧のとおり、指定されたパターン(GLOB)はディレクトリの実際のファイル名にのみ適用され、ディレクトリ名を名前/に含めることはできないため、同様のパターンは決して/proc一致しません。

--exclude-dir=procしたがって、and --exclude-dir=sys(または--exclude-dir={proc,sys}時間が足りない場合)を使用する必要があります。また、この方法は/procandをスキップする/sysだけでなく、その他次のいずれかの名前のディレクトリです。

この2つのディレクトリを回避しながら、ルートから下にディレクトリツリー全体を再帰的に検索するもう1つの方法は、grepfromを使用することですfind

find / \( -type d \( -path /proc -o -path /sys \) -prune \) -o \
    -type f -exec grep 'PATTERN' {} +

これにより、2つのことが検出されます。特定ディレクトリを/proc選択して入力を/sys停止します。findまた、grep一度にできるだけ大きなバッチで見つかった一般的なファイルも提供します。

おすすめ記事