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

perlについてのメモ。

一括変更のときに、コマンドオプションがどんな働きをするかを参照できるようにメモしておく。

 

■-eでperlの命令をそのまま実行できる

$perl -e ' print "Hello!?n" '

-pでループと同じ働きを繰り返しさせる。

$perl -pe 1 index.html

-eと合わせて、コマンドラインで指定されたファイルごとに命令を実行。

上記の1はperlの命令のreturn 1;と同じ命令で、index.htmlの中身を1行ずつ繰り返しプリントする。

このループの働きと同じ。

LINE:
while (<>) {
# ここのコマンド
} continue {
print or die "-p destination: $!?n" ;
}

■index.htmlの中の白で指定している色をグレーに変更する

ファイル名は別名で保存する必要があるので、index_new.htmlとする。

 $ perl -pe 's/#FFFFFF/#333333/g' index.html > index_new.html

 

たくさんファイルがあると、上記方法だとキーボードをたたく指が疲れるので、-iを組み合わせて使う。

 $ perl -pi -e 's/#FFFFFF/#333333/g' index.html 

ありがたいことに複数ファイルも対応できるので、

 $ perl -pi -e 's/#FFFFFF/#333333/g' *.html

 

心配だからバックアップをとりながら、というときは、

$ perl -pi.BAK -e 's/#FFFFFF/#333333/g' *.html

ちょっと待てよ、#FFFFFFじゃなくて、#ffffffで指定してるのもあったというときは、iでマッチングさせる。

$ perl -pi.BAK -e 's/#FFFFFF/#333333/i' *.html

カレントディレクトリだけじゃなくて、htmlの入った全部のディレクトリを一括で変更したいときはfindで見つけたファイルをperlに送り込む。xagsを使えば橋渡しをしてくれる。 最初に確認。

$ find /home/myname/public_html -name "*.html"

次に本番実行。

 $ find /home/myname/public_html -name "*.html" | xargs perl -pi -e 's/#FFFFFF/#333333/g'