Sig*_*gur 5 shell-script rename
我有一个名为作为文件0-n.jpg
为n
从1到500,例如。
问题是一些使用 Windows 的人没有使用前导零,所以当我这样做时ls
我得到
0-100.jpg
0-101.jpg
...
0-10.jpg
...
0-199.jpg
0-19.jpg
0-1.jpg
Run Code Online (Sandbox Code Playgroud)
所以我想重命名它们以插入前导零,以便结果ls
可能是
0-001.jpg
0-002.jpg
...
0-100.jpg
...
0-499.jpg
0-500.jpg
Run Code Online (Sandbox Code Playgroud)
换句话说,我想要所有文件名长度相同的文件。
我尝试了这个解决方案,但我收到了一系列错误,例如
bash: printf: 0-99: invalid number
Run Code Online (Sandbox Code Playgroud)
如果您的系统具有基于 perl 的rename
命令,您可以执行以下操作
rename -- 's/(\d+)-(\d+)/sprintf("%d-%03d",$1,$2)/e' *.jpg
Run Code Online (Sandbox Code Playgroud)
使用-v
(verbose) 和-n
(no-op) 选项对其进行测试:
$ 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
Run Code Online (Sandbox Code Playgroud)