Linuxコマンドで複数ファイルを一括置換(find / sed / xargs )
自分用の( ..)φメモメモですが、公開します。
Linuxコマンドだけでファイルを一括置換する方法で、さくらやエックスサーバーなどのコンソールが使えるホスティングサーバー上で複数のHTMLファイルを一括置換する場合などに便利です。
コマンドは以下の通りです。
コマンド
find -name "ファイル名" | xargs sed -i "s/置換前/置換後/g"
まずfindコマンドで対象ファイルを検索し、それをパイプとxargsを使ってsedで置換をしてあげる、という手順です。
※重要※↑これの意味が「何のことやら?」となる人は、素直にFTPソフトで対象ファイルをダウンロードして、WindowsかMacのPC上でファイル置換をしてください~(*’ω’*)。
ちなみにfindコマンドの使い方次第で色々なファイルの置換ができるのですが、ミスると予想外のファイルまで置換してしまいます。なので、必ずバックアップを取ってからやるようにしてくださいね。
実行例
ヒポラボは、複数のindex.htmlファイルのヘッダにある
「http://fonts.googleapis.com」を
「https://fonts.googleapis.com」に置換しました。
その場合には、以下の通りとなります。
cd cd www find -name "index.html" | xargs sed -i "s/http:\/\/fonts.googleapis.com/https:\/\/fonts.googleapis.com/g"
この場合、メタ文字「/」を「\」でエスケープシーケンスしてあげる必要がある点にもご注意ください。
エスケープシーケンスって何? という人は「sed エスケープシーケンス」という言葉でググってくださいな~。