find
を使用する場合、文字列を検索するときにファイル名と行番号を返すにはどうすればよいですか?あるコマンドでファイル名を返し、別のコマンドで行番号を返すことができましたが、それらを組み合わせることができないようです。
ファイル名:find . -type f -exec grep -l "string to search" {} \;
行番号:find . -type f -exec grep -n "string to search" {} \;
回答
コマンドラインスイッチ-H
は、ファイルが1つしかない場合でも、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.
Kojiro がコメント、これはPOSIX標準の一部ではありません。GNUとBSD grepの両方にありますが、一部のシステム(Solarisなど)にない可能性があります。
コメント
は非標準のGNU拡張機能であり、非GNUシステムの代替アプローチを提供します。
-H
フラグが