下層ディレクトリのファイル名を正規表現で抽出して一括置換したときのメモです。
こういう単純な置換ですが、正規表現でのやり方がわからなかったので試行錯誤しました。
rename.sh
mv ./Bambuu/s1.jpg ./Bambuu/1s.jpg
mv ./Bambuu/m2.jpg ./Bambuu/2m.jpg
mv ./Bambuu/f3.jpg ./Bambuu/3f.jpg
確認
rename_confirm.sh
find . -regex .*[smf][123]\.jpg | sed -e 's/\(.*\)\([smf]\)\([123]\)\.jpg/mv \1\2\3\.jpg \1\3\2.jpg/'
実行
rename.sh
find . -regex .*[smf][123]\.jpg | sed -e 's/\(.*\)\([smf]\)\([123]\)\.jpg/mv \1\2\3\.jpg \1\3\2.jpg/' | sh
分解
コマンド | 目的 |
---|---|
find -regex | 正規表現で探索 |
sed -e | 置換しコマンドを追加 |
sed 's/<置換前>/<置換後>/' | <置換前>を<置換後>に置換 |
sed 's/\(\)//' | ()は\でエスケープしなければならない |
\1 | 1番目の()を挿入 |