ごらくらいふ

プログラミングしたりゲームしたり

共通のキーワードを持つファイルたちをBashで一括置換リネームする

記事タイトルの通り、共通のキーワードを持つファイルたちを一括でリネームしたい状況になった。

たとえば

  • デザイナと image_yyyymmdd_{s,m,l}というファイル名でやり取りしてるが、最終的にはyyyymmddが不要とか、キーワードに置換するとか
  • app.yyyymmdd.log の日付部分を消したいとか

bashには置換する変数展開がある

item="a findString."
echo ${item/findString/replaceString} # a replaceString.

例に適用する

ls
# image_yyyymmdd_s.jpg image_yyyymmdd_m.jpg image_yyyymmdd_l.jpg

for item in $(ls)
do
    mv -v $item ${item//yyyymmdd/00000000}
done
ls
# app.yyyymmdd.log debug.yyyymmdd.log error.yyyymmdd.log

for item in $(ls)
do
    mv -v $item ${item//.yyyymmdd/}
done

参考

d.hatena.ne.jp