どうやってgrepして一致する行だけを返すのですか?つまり、パス/ファイル名は結果から省略されます。
この場合、現在のディレクトリにあるすべての.barファイルを調べて、FOOという用語を検索します。
find . -name '*.bar' -exec grep -Hn FOO {} \;
find
する必要はありません。特定のディレクトリ内でパターンを探しているだけなら、これで十分です。
grep -hn FOO /your/path/*.bar
-h
は、man grep
のように、ファイル名を隠すパラメータです。
- h、 - no-filename
出力時のファイル名の接頭辞を抑制します。検索するファイルが1つだけ(または標準入力のみ)の場合は、これがデフォルトです。
あなたが使っていたことに注意してください
- H、--with-filename
一致ごとにファイル名を印刷します。検索するファイルが複数ある場合はこれがデフォルトです。
-H
を-h
に置き換えるだけです。オプションの詳細についてはman grep
を確認してください。
find . -name '*.bar' -exec grep -hn FOO {} \;
Manページから:
-h, --no-filename
Suppress the prefixing of file names on output. This is the default when there
is only one file (or only standard input) to search.