2011-01-21 12 views
0

私はそれに200ファイルのフォルダがあります。ファイル名は「abc0」〜「abc199」と言うことができます。これらのファイルのうち5つに "ez123"という文字列が含まれていますが、どのファイルがどれかわかりません。文字列を含むファイルのファイル名を見つけるために私の現在の試みは、次のとおりです。私は、ディレクトリ内のすべてのファイルのファイル名を含むファイルを持っている何百ものファイルがある場合、特定の文字列を含むファイルのファイル名を取得するにはどうすればよいですか?

#!/bin/sh 
while read FILES 
do 
cat $FILES | egrep "ez123" 
done 

。だから私は実行します:

この文字列を含むファイルが存在するが私はまだファイルの名前を持っていないことを確認します。これを達成するための最善の方法に関するアイデアはありますか?

おかげ

答えて

1
find /directory -maxdepth 1 -type f -exec fgrep -l 'ez123' \{\} \; 

(あなたが唯一のいずれかがあるかどう)(再帰的にディレクトリではなくツリーを検索したい場合は-maxdepth 1にのみ必要です)。

fgrepはgrepより少し速いです。 -lには、一致するファイル名のみが表示されます。

+0

感謝を試すことができますし、私が幸せに暮らすことができました! – gfrench

0

は-qs、これは({}ファイル名で置き換えられますそれらにgrepを実行し、現在のディレクトリ(およびサブディレクトリ)内のすべての実ファイルを見つけるためfindを使用します

find -type f -exec grep -qs "ez123" {} \; -print 

をお試しくださいサイレントにして終了コードを設定するだけです)、-printはgrepが一致する行を見つけたファイルの名前を表示します。

0

約について:

xargs egrep -l ez123 

これはstdinからファイル名を読み取り、一致するファイル名を出力します。

3

あなたは問題を解決し、フィードバックのための

grep -l "ez123" abc* 
関連する問題