ファイル名をまとめて変更したいです
A-B-C#2-D.wav
。A-B-C#1-D.wav
たとえば、次のようになります。
A-B-C#2-D.wav
A-B-C#8-G.wav
A-B-C6-E.wav
~になる
A-B-C#1-D.wav
A-B-C#7-G.wav
A-B-C5-E.wav
したがって、3番目の部分文字列の数字はマイナス1でなければなりません。 (#
コメントではないファイル名の一部;#
ファイル名があるかどうかは可能です。)
ベストアンサー1
そしてzsh
:
autoload zmv # best in ~/.zshrc
zmv -n '(*[^0-9])(<1->)(*.wav)(#qn)' '$1$(($2-1))$3'
(満足すれば削除-n
)
名前を変更する(#qn)
ために、リストを番号順にソートするために使用されます。A-B-C#9-D.wav
今後 A-B-C#10-D.wav
例えば。
ただし、aA-B-C#9-D.wav
と両方がA-B-C#10-D.wav
存在する場合zmv
、ファイル名は既存のファイル名に変更されたとマークされ、コマンドは中断されます。-f
これを引き続き適用するには、オプションを追加する必要があります。
または、zsh(数値グローバル順序の場合)とperl
名前変更を使用します。
rename -n 's/\d+/$&-1/e' ./*[1-9]*.wav(#qn)
-f
(一部のバリエーションと同じ警告とオプションrename
)