背景
フォルダ名が連番などで保存されていて、そのフォルダ名をまとめて置換したい場合に適用できます。
具体的な例だと、folder0, folder1, folder2, ... , folder100 といったフォルダ名をまとめてdir0, dir1, dir2, ... , dir100 と置換したい場合。
最初は、awkで変換してたけど、もっと簡単な方法(renameとshellの変数展開)をコメントで教えてもらいました。
方法
renameを利用する方法
おそらくこれが一番簡単。
terminal
rename s/folder/dir/ folder*
bashの変数展開を利用する方法
Bashを使ってる場合は、シェル変数の展開時に文字列を置換してしまうことができます。
terminal
for n in folder*;
do mv $n ${n/folder/dir};
done
awkで変換する方法
最初に思いついた方法。ちょっとシンプルじゃなくて恥ずかしいですね。
terminal
ls -d1 folder[0-9]* | awk '{print $1, $1}' | awk '{gsub("folder", "dir", $2); print "mv", $1, $2}' | sh