2017-01-30 6 views
-2

私は、ファイルがたくさんあるディレクトリで不明なファイルにパターンをgrepしようとしています。私はその操作があまりにも多くの帯域幅を消費するため、私は直接のgrepを使用することはできませんファイルの非常に大きなフォルダ内のファイルを検索していますので、しかしbash grepでfindの出力を使用

$ grep 0RY7HYLA in ./*8017*/*diag* 

:私は通常、次のコードを実行したいです。 grepと一緒にfindコマンドを使う必要があります。私は上記のコードは、すなわち、このコードを実行しているからの出力がない動作しません。つまり

grepコマンドへの入力としてパイプに
find ./*8017*/*diag* -maxdepth 3 -type f -name output_log -exec egrep -l '0RY7HYLA' {} \; | grep 0RY7HYLA 

をfindコマンドの出力を苦労しています。パイプの前にコードを実行するだけでは、ファイルとディレクトリが出力されますが、grepは出力されません。

if find ./*8017*/*diag* -maxdepth 3 -type f -name output_log -exec egrep -l '0RY7HYLA' {} \; ; then grep 0RY7HYLA ???????? ; fi 

これはなんとかです:

第二に、私は、条件文でこれを置くことのようなものを必要としますか?

+0

希望の出力は何ですか?両方の文字列に一致する行を印刷しようとしていますか? –

+0

"上記のコードは機能しません。"あなたは何を言っているのですか?予期しない結果が返されたか、または予期した結果が返されなかったか、エラーが表示された可能性がありますか? – Aaron

+0

私はそのステートメントに、より良い説明を追加しました。 – stevo

答えて

0

私はそれを正しく理解している場合、私は何をやろうとしているが、次のコマンドを使用して解決できると思います:

find . -type f -print0 | xargs -0 grep "0RY7HYLA" 

これは、現在のディレクトリの下のファイルで「0RY7HYLA」の出現を出力します。

+0

です。なぜなら 'xargs'ではなく' -exec grep '0RY7HYLA' {} + 'を使うのはなぜですか? –

+1

私はそれを見て、私は-execフラグも{} +も知らない。予約していただきありがとうございます! – Pol