windowsで撮ったスクリーンショットのファイル名を一括で変更したくなったので、renameコマンドを使ってみました。適当に検索してsedに似たような書式(こんな感じの→rename "s/xxx/yyy/" xxx?.txt)のものを実行してみたところ、何にも起こらない…🤔
なぜなのか調べてみたところrenameには大きく2種類あるようで、古くからあるutil-linuxのコマンドとPerlに同梱されているコマンドで、お互い別物らしい。私が利用しているOSはfedoraで、このコマンドのmanを見てみるとutil-linuxのコマンドだということが分かりました。参考にしたコマンドは、おそらくUbuntuを使ってる人が使っているコマンドでこちらはPerlに同梱されているコマンドなので私の環境では実行出来なかったようです。
というわけで、以下のようなファイルがあった場合、
$ls
nameA-1.txt
nameA-2.txt
nameA-3.txt
以下のようにシンプルに書けばOK。
$rename "nameA(変更前の名前)" "nameB(変更後の名前)" *.txt
変更できてる。
$ls
nameB-1.txt
nameB-2.txt
nameB-3.txt