如何使用零填充版本重命名它找到的最后一个数字字符串,并保留文件名的其余部分?
AAA 2000-01-03 bbb 2001-03-04 page_1.pdf
到:
AAA 2000-01-03 bbb 2001-03-04 page_0001.pdf
看:
- 一次重命名数百个文件以进行正确排序
- 如何在 Bash 中用零填充文件名中的数字?(来自 Stack Overflow)
答案1
最简单的方法可能是匹配前面的page_
字符串
前任:
$ rename -n 's/page_(\d+)/sprintf "page_%04d", $1/e' *.pdf
rename(AAA 2000-01-03 bbb 2001-03-04 page_1.pdf, AAA 2000-01-03 bbb 2001-03-04 page_0001.pdf)
(-n
当您对它所做的事情感到满意时,请将其删除)。
如果你真的需要匹配“最后一个数字”,你可以使用积极展望将匹配项锚定到字符串的末尾$
,并在其之间放置一个可能为空的非数字序列:
$ rename -n 's/(\d+)(?=\D*$)/sprintf "%04d", $1/e' *.pdf
rename(AAA 2000-01-03 bbb 2001-03-04 page_1.pdf, AAA 2000-01-03 bbb 2001-03-04 page_0001.pdf)