unixでファイルのリネームと文字列の一括置換
- 2012年 3月13日
ファイルの文字列を変換して、拡張子も変えるスクリプト
サクラサーバーでSSI(サーバーサイドインクルード)が使えなかった為、シェルで対応。
SSIがなぜ効かなかったのかは不明。なんかもっと上手なシェルの書き方もありそうだけども。。。
for file in `find ./ -name "*.html" -print` do res=`expr $file : "\(.*\).html"` cp $file $file.bk done find . -type f -name '*.html' -print0 | xargs -0 perl -i -pe 's/<\!--#include virtual=\"\/common\/ssi\/sample\.txt\"-->/<\?include(\"\/home\/sample\/www\/common\/ssi\/sample\.shtml\")\?>/g' find . -type f -name '*.html' -print0 | xargs -0 perl -i -pe 's/<\!--#include virtual=\"\/common\/ssi\/sample2\.txt\"-->/<\?include(\"\/home\/sample\/www\/common\/ssi\/sample2\.shtml\")\?>/g' for file in `find ./ -name "*.html" -print` do res=`expr $file : "\(.*\).html"` mv $file $res.php done
追記。
実は最初のfor文の中に全部いれちゃえばよかったのかも。