複数ファイルの中身を一括置換するには

複数のファイルをまとめて置き換えたいときは 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 の使い方