find ... -exec grepを使用してファイル名と行番号を返すにはどうすればよいですか?

find ... -exec grepを使用してファイル名と行番号を返すにはどうすればよいですか?

find文字列を検索するときにファイル名と行番号をどのように返しますか?あるコマンドはファイル名を返し、別のコマンドでは行番号を返しましたが、それらを組み合わせることはできないようです。

ファイル名:find . -type f -exec grep -l 'string to search' {} \;

行番号:find . -type f -exec grep -n 'string to search' {} \;

ベストアンサー1

コマンドラインスイッチは、ファイルが1つしかない場合でもファイル名を強制的に-H印刷します。grep

% grep -n 7 test.in
7:7
% grep -Hn 7 test.in
test.in:7:7

   -H, --with-filename
          Print the filename for each match.

次のように注意してくださいゴジロで言ったコメント、これはPOSIX標準の一部ではなく、GNUとBSD grepの両方に存在しますが、一部のシステム(Solarisなど)には含まれない場合があります。

おすすめ記事