あるディレクトリにファイルが複数あって検索するとき、grepコマンドで検索できますが、サブディレクトリがあって階層も不明な場合、どうしたらよいでしょうか?
こんなとき、Linuxであれば、以下のようにできます。
$ find あるディレクトリ -type f -exec grep -H 検索文字列 {} \;
たとえば、「/etc」 配下の全ファイルから、「192.168.0.100」 を検索したい場合、
$ find /etc -type f -exec grep -H 192.168.0.100 {} \;
↑こうなります。
ここでのキモは、grepの 「-H」オプションを使うことです。このオプションをつけないと検索した行の表示はされますが、ファイル名が表示されないのでどこのファイルかわからないのです。
さて、Linux系の大多数のOSでは、 grepの 「-H」オプションがつかえますが、AIX等のUNIXでは使えないことが多いです。そのときにどうするかというと、
$ touch ダミーファイル
$ find あるディレクトリ -type f -exec grep 検索文字 ダミーファイル {} \;
↑このように、ダミーファイルも一緒にgrepに渡してやることにより複数ファイル検索となり、ファイル名も表示されます。