カテゴリー : 2012年 3月

unixでファイルのリネームと文字列の一括置換

ファイルの文字列を変換して、拡張子も変えるスクリプト

サクラサーバーで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文の中に全部いれちゃえばよかったのかも。