複数のファイルをまとめて置き換えたいときは sed を使うと便利です。
たとえばこのようにすると指定したディレクトリの中のすべての .html ファイルの内容を 2007年 から 2008 年に書き換えることができます。
for i in `find /var/www/html -type f -iregex ‘.*\.html’`; do
mv $i $i.bak
sed -e ‘s/2007年/2008年/g’ $i.bak > $i
done
影響があったファイルの一覧を得るには次のようにします
for i in `find /var/www/html -type f -iregex ‘.*\.html’`; do
diff -q $i.bak $i
done
影響があったファイルの内容を比較する場合も diff を使います。
for i in `find /var/www/html -type f -iregex ‘.*\.html’`; do
echo $i
diff $i.bak $i
done
問題に気づいて元に戻したいときは *.bak を移動させれば元に戻ります。
for i in `find /var/www/html -type f -iregex ‘.*\.html’`; do
mv $i.bak $i
done
変更が問題なければ .bak ファイルを削除して置換完了です。
for i in `find /var/www/html -type f -iregex ‘.*\.html’`; do
rm $i.bak
done
参考:
sed の使い方