8
8

More than 5 years have passed since last update.

zsh で0埋め連番リネーム

Posted at

zmv で「${(l:e::s1::s2:)param}」を利用する。eは全体の長さ、s1は埋める文字、s2はparam左に挿入する文字列であり、s1とs2はオプションである(s1省略時はスペース埋め、s2はs1がある時のみ使用可能)。

zsh で以下を評価すればだいたいの挙動がわかると思う。

n=1
echo ${(l:10:)$((n))}
echo ${(l:10::0:)$((n))}
echo ${(l:10::0::5:)$((n))} 

さて、0埋め連番リネームだが、これをzmvの第2引数に使えばいい。jpgファイルを1から始まる3桁0埋めしたいなら以下のようにできる。ファイル名を辞書順で並べた上から、001.jpg、002.jpg、…… というファイル名にリネームされる。

(n=1; zmv '*.jpg' '${(l:3::0:)$((n++))}.jpg')

ただし、リネーム前に 001.jpg などのファイルがあるとエラーが出るので、その場合は適当なプレフィックスなどを付けて連番リネームした後プレフィックスを削除する。

(n=1; zmv '*.jpg' 's${(l:3::0:)$((n++))}.jpg')
zmv 's(*).jpg' '$1.jpg'
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8