2011-11-18 14 views
7

特定のディレクトリを除外してgrepを使用して再帰検索を行うにはどうすればよいですか?grepを使用して再帰的検索でディレクトリを除外する方法は?

背景:私は検索で排除したいログファイルで構成される大きなディレクトリを持っています。最も簡単な方法は、ログフォルダを移動することです。残念ながら、私はそれを行うことはできません。プロジェクトがその場所を義務付けているからです。

どうすればいいですか?

答えて

10

あなたはこれをお探しですか? grepのmanページから

:あなたが検索でfindを使用できる場合に、代替として

--exclude-dir=DIR 
      Exclude directories matching the pattern DIR from recursive searches. 
+0

ありがとう、時には忘れて、manページもあります:) – Kiran

+0

@KiranChandrashekhar与えられた答えを受け入れてください。 – FailedDev

+2

古いバージョンのgrepにはこのフラグがありません。 – ale

0

、それはまた、有用である可能性がある:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
したい場合は [directory]が実際に(現在のディレクトリにすることができますちょうど .がする)。

次の部分は-name "*.log" -pruneです。それはパターン*.logでファイル名を検索し、それらを結果から除外します。

次に、

そして( "または" など)と言う-type f -print-oある "印刷ファイルである任意のタイプ(stdoutに)。"

これらの結果には、.logで終わるものを除き、すべて[directory]にあるすべてのファイル(ディレクトリは返されません)が含まれている必要があります。その後、あなたはgrepの結果を得ることができます。

関連する問題