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