数字を挿入して複数のファイルの名前を変更する方法

数字を挿入して複数のファイルの名前を変更する方法

次のファイルのリストがあります。

pairs10_10.mp3
pairs10_11.mp3
pairs10_12.mp3
pairs10_13.mp3
pairs10_14.mp3
pairs10_15.mp3
pairs10_16.mp3
pairs10_17.mp3
pairs10_18.mp3
pairs10_19.mp3
pairs10_1.mp3
pairs10_2.mp3
pairs10_3.mp3
pairs10_4.mp3
pairs10_5.mp3
pairs10_6.mp3
pairs10_7.mp3
pairs10_8.mp3
pairs10_9.mp3
pairs1_10.mp3

後でソートするときに正しい順序でソートされるように、次のようなものを取得したいと思います。

pairs10_10.mp3
pairs10_11.mp3
pairs10_12.mp3
pairs10_13.mp3
pairs10_14.mp3
pairs10_15.mp3
pairs10_16.mp3
pairs10_17.mp3
pairs10_18.mp3
pairs10_19.mp3
pairs10_01.mp3
pairs10_02.mp3
pairs10_03.mp3
pairs10_04.mp3
pairs10_05.mp3
pairs10_06.mp3
pairs10_07.mp3
pairs10_08.mp3
pairs10_09.mp3
pairs01_10.mp3

私はコマンドについて学びましたrenameが、この名前を変更する方法がわかりません。

ベストアンサー1

Perlrenameコマンドを使用します。

rename 's/([0-9]+)_([0-9]+)/sprintf("%02d_%02d",$1,$2)/e' *.mp3

修飾子es代替演算子置換が補間された文字列ではなくPerl式であることを意味します。%02d関数形式sprintf必要に応じて、先頭にゼロを追加して、2桁の数字のみで整数形式を指定します。


または、zshとそのエントリを使用してください。numeric_glob_sortオプション。ただし、zshがグローブ操作を実行している場合にのみ機能します(図を参照play pairs*.mp3)。

おすすめ記事