Subscribed unsubscribe Subscribe Subscribe

ファイル名の一括変更

$ ls
hoge1.txt fuga1.txt piyo1.txt

というファイル群に対し、ファイル名に含まれる番号だけを変えて

$ ls
hoge2.txt fuga2.txt piyo2.txt

となるようにしたくて、調べてた。
最初は、

$ for a in `ls *1*`; do mv $a `echo $a | sed "s/1/2/"`; done

というのしか思いつかなくて、なんともカッコ悪いし、俺馬鹿なの?死ぬの?とか思ったけど、どうやら

$ for a in `ls *1*`; do mv $a ${a/1/2}; done

という方法が良さげ。
変数展開にこんなに応用技があるとは知らなかったわ〜。
http://matsui.homeunix.com/index.php?Bash%A5%B7%A5%A7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%2F%C6%C3%BC%EC%A4%CA%CA%D1%BF%F4%C5%B8%B3%AB