web-dev-qa-db-ja.com

パス/ファイルを表示せずにgrep:line

どうやってgrepして一致する行だけを返すのですか?つまり、パス/ファイル名は結果から省略されます。

この場合、現在のディレクトリにあるすべての.barファイルを調べて、FOOという用語を検索します。

find . -name '*.bar' -exec grep -Hn FOO {} \;
190
Allan Bendy

findする必要はありません。特定のディレクトリ内でパターンを探しているだけなら、これで十分です。

grep -hn FOO /your/path/*.bar

-hは、man grepのように、ファイル名を隠すパラメータです。

- h、 - no-filename

出力時のファイル名の接頭辞を抑制します。検索するファイルが1つだけ(または標準入力のみ)の場合は、これがデフォルトです。

あなたが使っていたことに注意してください

- H、--with-filename

一致ごとにファイル名を印刷します。検索するファイルが複数ある場合はこれがデフォルトです。

308
fedorqui

-H-hに置き換えるだけです。オプションの詳細についてはman grepを確認してください。

find . -name '*.bar' -exec grep -hn FOO {} \;
7
jkshah

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.
0
TC1