固定長に名前を変更する方法

固定長に名前を変更する方法

0-n.jpgたとえば、1〜500という名前のファイルがあります。n

問題は、Windowsを使用している一部の人が前にゼロを使用しないことですls

0-100.jpg
0-101.jpg
...
0-10.jpg
...
0-199.jpg
0-19.jpg
0-1.jpg

lsそのため、結果が次のようになるように前にゼロを挿入するように名前を変更したいと思います。

0-001.jpg
0-002.jpg
...
0-100.jpg
...
0-499.jpg
0-500.jpg

つまり、すべてのファイルが同じファイル名の長さを持つことを望んでいます。

頑張ったこのソリューションただし、次の一連のエラーが発生します。

bash: printf: 0-99: invalid number

ベストアンサー1

システムにPerlベースのrenameコマンドがある場合は、次のことができます。

rename -- 's/(\d+)-(\d+)/sprintf("%d-%03d",$1,$2)/e' *.jpg

-v(verbose)および(no action)オプションを使用して-nテストします。

$ rename -vn -- 's/(\d+)-(\d+)/sprintf("%d-%03d",$1,$2)/e' *.jpg
0-10.jpg renamed as 0-010.jpg
0-19.jpg renamed as 0-019.jpg
0-1.jpg renamed as 0-001.jpg

おすすめ記事