を出力ファイル名と内容-grepするを見つけるシェルスクリプトを書きます私はこの単純なスクリプトを使用することができます「ABC」を含むすべてのPHPファイルを表示するには1行で
find . -name "*php" -exec grep abc {} \;
は、私は今、希望すると同時に両方を行うものですが、同じ行に:私は、結果として、代わりにファイル名の内容の一部を抽出します。
期待出力:
path1/filename1: lorem abc ipsum
path2/filename2: ipsum abc lorem
path3/filename3: non abc quod
grep abc *
のような多かれ少なかれがありません。
編集:私はこれを単純なシェルスクリプトとして使いたいと思います。出力が1行であれば大丈夫ですので、さらにグレープすることが可能です。しかし、スクリプトが1行だけである必要はありません。私はそれをbashスクリプトファイルに入れています。
編集2:後で私は "ack"を見つけました。これはすばらしいツールで、grepの代わりにこれを使用します。それはこれ以上すべてを行います。 http://betterthangrep.com/あなたは-H
スイッチ(man grep
)を使用し、望ましい結果
(スクリプトは無関係が、日々shell'ingに有用)、その場合には、それキャプチャとともにファイル名を出力します。私はそれが標準的な振る舞いだと思っていますし、あなたとは違ったgrepsでも動くはずです。 'find ... -print0'を使い、出力を 'xargs -0'にパイプして、0の区切り文字を使用し、あなたのコマンドが厄介なファイル名(例えば空白を含む)で動作するようにするほうが、 。 –
ご意見ありがとうございます。私は答えを更新しました。 – Stephan202
grepに渡される1つのファイルの可能性に対処するもう1つの方法は、コマンドに/ dev/nullを追加することです。grepは常に少なくとも2つのファイルを検索します。 grepの '-H'オプションは、POSIX仕様の一部ではありません。有用なGNU拡張です。 –