Macでファイル名を一括で変更する
大量のファイルをリネームするのは何かと面倒。
最近のMacだと zsh
がデフォルトなので、zmv
というコマンドを使ってみた。
zsh
1
2
3
4
vim ~/.zshrc
# 以下を追記して保存
autoload -U zmv
例えば、こういうファイルがあるとします。
連番を間違って付けてしまった...。ファイルが 099_z.txt
まであるので、手作業でやりたくない... みたいな状況です。
zsh
1
2
3
018_a.txt
018_b.txt
019_c.txt
zsh
1
zmv -n '0([0-9]##)(*.txt)' '0$(($1+1))$2'
0([0-9]##)(*.txt)
は対象ファイル(例えば 018_a.txt など)()
で囲んでいる部分をキャプチャできるので、その数字を第2引数で使用します。$(($1+1))
でキャプチャした数字に 1 を足す処理を行っている。$2
は(*.txt)
でキャプチャされた文字列をそのまま付与する。
-n
はテスト実行のためのオプションです。本当にリネームしたい場合は外します。
これだと 010
〜 099
までしか対応できないけど、桁数ごとに分割して作業すれば問題ないはず。
ゼロ埋めのオプションとかもあるらしけど、数回の作業であれば苦ではないので、今回は使いませんでした。