特定の文字列を含むPHPファイルを見つけるためにUnixを実行しているWebサーバーを検索したいと思います。通常、私はこれを行うために次のコマンドを使います。
探す。 -name "*.php" -print0 | xargs -0 grep -H -i "検索する文字列"
これはこれまでうまく機能しましたが、今ではすべてのPHPスクリプトに改行がなく、キャリッジリターンだけがあるサーバーに閉じ込められています。 grepはキャリッジリターンを新しい行として認識しないようです。したがって、ファイルに一致するものがある場合、上記のコマンドは行だけでなくファイルの内容全体を印刷します。
どんな助けでも大変感謝します!
ベストアンサー1
非常に効率的ではありませんが、動作するはずです。
find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <{})" \;
ファイル名を表示する他の方法は次のとおりです。
find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <'{}') |
sed s+^+'{}':\ +" \;