ソースツリーでコンテンツごとにファイルを再帰的に探したいです。 grepを使って以下を試しました。
$ grep -rn printf | grep %s | grep bcm_errmsg\(rv\)
これは私が望むように各行を返しますが、私は次のように変更しました。
$ grep -rn printf | grep %s | grep -l bcm_errmsg\(rv\)
しかし、ファイル名を印刷する代わりに
(standard input)
標準出力として印刷します。各ファイル名とパス(sed
使用)を取得するには、この問題をどのように解決する必要がありますか?
私がしたいこと:printf
次の行を含むすべてのファイルを見つけて、見つけた%s
ファイルbcm_errmsg(rv)
に次のsedコマンドを適用します。
sed -i 's/%s/%d/g; s/bcm_errmsg(rv)/rv/g;'
ベストアンサー1
私の考えでは、あなたが物事をあまりにも複雑に思うと思います。foo
現在のディレクトリとサブディレクトリのすべてのファイルで文字列を見つけるには、次の手順を実行します。
grep -r "foo" *
デフォルトでは、grepは見つかったファイル名の前に一致する行を出力します。
以下は、一致する行ではなくファイル名のみを出力します。
grep -rl "foo" *