- - PR -
ある文字列を含むファイルを探す方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-25 14:10
横山と申します。
あるディレクトリ配下(その下のディレクトリ内も含む)のファイルの中で 『ある文字列を含むファイル』を検索する方法がわかりません。 あるディレクトリ内(その下のディレクトリ内を含まない)のファイルから 「word」を含むファイルを検索する場合は、 grep word /home/somebody/* などとすると/home/somebody配下のファイルを検索し、検索結果として、 「一致したファイル名」と「一致した一行」が表示されます。 これを『その下のディレクトリを含む』形で検索する場合は、 find /home/somebody/ -type f -exec grep word {} \; などとすれば良いと考えたのですが、 上のfind文では「一致したファイル名」が出力されず、 「一致した一行」のみ出力されてしまいました。 「一致したファイル名」と「一致した一行」の両方を出力するには どうしたらよいのでしょうか? ご存知の方がいらっしゃれば教えていただきたいと思います。 宜しくお願いします。 | ||||
|
投稿日時: 2003-11-25 14:57
どもです。
xargs を使って find /home/somebody/ -type f -print | xargs grep word てのはどうでしょう? または、 find /home/somebody/ -type f -exec grep word {} \; -exec echo {} \; なんてベタベタな手が・・・。 | ||||
|
投稿日時: 2003-11-25 15:48
「特定の文字列を含むファイル名」が欲しいんですよね?
それでしたら、grepの返り値をチェックしないといけないのではないでしょうか。
ってな感じでどうでしょう。grep結果の行数をwc -lで求めるというちょっと回りくどいやり方ですが、一応私の持ってるLinux(VineLinux 2.5CR + updates)ではうまく動くようですよ。 | ||||
|
投稿日時: 2003-11-25 15:55
-rで再帰的に検索してくれると思うんですが、それではだめなんでしょうか?
| ||||
|
投稿日時: 2003-11-25 16:57
横山です。
KaNiさん、おばけさん、とんびさん、お返事ありがとうございます。 「-r」指定で無事求めていた結果が得られました。 (盲点でした・・・) ありがとうございました。 | ||||
|
投稿日時: 2003-11-25 20:22
すでに解決されているようですが...
> 「一致したファイル名」と「一致した一行」の両方を出力する ということに対しては常套手段があります。 find /home/somebody -print | xargs grep word /dev/null です。最後の /dev/null がポイント。 必ずしも /dev/null じゃなくてもいいんですが。 |
1