HTMLファイルを一括で変更する(シェル・perl編)

数千ページにおよぶhtmlファイルを変更したくなったとき、たった一行のシェルスクリプトやperlが大活躍!!

  • htmlファイル中の文字列「aaa.jpg」を「bbb.jpg」へ変更する
  • IPアドレス(192.168.12.34)をホスト名(www.mydomain.co.jp)へ置換える

単語の一括置換えは、非常に便利。 

 

■まずはリストアップする

現在のディレクトリ以下で、aaa.jpgを含んでいるファイルをリストアップする。

$ grep -l aaa.jpg *.html

public_htmlディレクトリ以下、全てにわたって、aaa.jpgを含んでいるファイルをリストアップする。

$ find public_html -name "*.html" | xargs -i grep -l aaa.jpg {}

Macのターミナルでは、xargsの-iオプションは付けないで実行できた。最後の{}も省略する。

 

 

■この一行で一括置き換えを実行

aaa.jpg を bbb.jpg に置換える。

$ find . -name "*.html" | xargs perl -pi -e 's/aaa.jpg/bbb.jpg/g'

 たった1行で何千ページでもするっとaaa.jpgをbbb.jpgへ置き換えてくれる!!!

 

IPアドレス を ホスト名 に置換える。

$ find . -name "*.html" | xargs perl -pi -e 's/192.168.12.34/www.mydomain.co.jp/g'

 

 

■注意する事

実行前に必ずバックアップをとっておく。

% cp -prf public_html public_html.BAK