開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

sedコマンド:全てのファイル内をまとめて変更

最終更新:2017-10-07 by Joe

こないだレンタルサーバーにログインしたら、すべてのPHPファイルの冒頭に不審な(読めない)コードが挿入された。おそらくバックドアのコード。怖いですね。

かなり大量のファイルが一度に同じような改ざんを受けたされたので、まとめて処理するする、そんなときの「SED」コマンド。Stream Editorの略だそうです。

出力を変更してくれるコマンド。本来は、標準出力なところを、-i オプションで、出力せずに、ファイルを直接書き換えることができます。

sed -i -e '正規表現' FILE_NAME.txt;

これと繰り返し実行の「find 」コマンドを組み合わせることで、まとめてファイル内のテキストを書き換えてくれる。

git レポジトリの中だったので、書き換えるファイルを限定するため、-name ‘.php’として、PHPファイルだけにしました。

find . -type f -name '*.php' -exec sed -i '' -e 's/theBackdoorCode//g' {} +;

 

マックのひとは、、-i ” とクオーテーションで空文字を入れないと、保存されるファイルに xxxx.php-e とか変な事がおきて悲しい感じになりました。理由はよくわかりません。

 

参考:

http://blog.shonanshachu.com/2013/02/macsed.html

 

閉じる