Linux find および sed コマンドを使用して見つかったログファイル

Linux find および sed コマンドを使用して見つかったログファイル

txt、html、jpg、pngファイルを含むフォルダがあります。
これで、すべてのテキストベースのファイル(txtとhtml)を確認し、検索と置換を開始したいと思います。
私は以下を行い、うまくいきました。

find ./ -iregex '.*\.\(txt\|html\)$' -exec sed -i 's/search/replace/g' {} +

しかし、今、交換が行われたファイルも記録したいと思います。
私のフォルダに5つのtxtおよび/またはhtmlファイルがあるとしましょう。しかし、そのうちの2つだけが文字列searchを含むため、いくつかの代替品があります。
したがって、コマンドの後には両方のmyLog.logファイル(フルパス)が印刷されるログファイル(たとえば)が必要です。

しかし、そのようなコマンドをどのように実装できますか?
これsedコマンドにはそのようなパラメーター/オプションはありません。

答え1

searchまず、パターンを検索してから検索してログを作成する必要がありますsed

試してみてください(読みやすくするために改行)

find ./ -iregex '.*\.\(txt\|html\)$' \
    -exec grep -q search {} \;  \
    -print \
    -exec sed -i 's/search/replace/g' {} + \
    > my-sed.log

どこ

  • searchin は-exec grep -q search {} \;検索パターンです。+複数のファイルを一致させる人は使用できません。
  • -print記録できるように一致するファイルを印刷します。

関連情報