Linuxコマンドで複数ファイルを一括置換(find / sed / xargs )

Linux,Web開発,システム開発

自分用の( ..)φメモメモですが、公開します。
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 エスケープシーケンス」という言葉でググってくださいな~。

Print Friendly, PDF & Email