バックアップを取ったファイルを元に戻す

よくsedなんかで

$ sed -r -i.bak 's/xxx/xxxxx/' ./*

とかやったりとかするのですが、これを元の状態に戻すとなると

$ for i in `find . -name '*.bak'`; do rm -f `echo $i | sed -r -e 's/\.bak//'`; mv $i `echo $i | sed -r -e 's/\.bak//'`; done

とかこんな感じでいいのかな。って普通こんなワンライナーで書く人少ないような。

for i in `find . -name '*.bak'`  # *.bakで検索
do
  rm -f `echo $i | sed -r -e 's/\.bak//'`  # .bakじゃないファイルを消して
  mv $i `echo $i | sed -r -e 's/\.bak//'`  # .bakを普通のファイル名に戻す
done

後のために一応見やすく。空白を含むファイル名とかだったら-print0とかxargs使った方がいいんだろうけど。まあいいのです。