文件的顺序重命名

3 command-line regex perl rename batch-rename

我找到了一个零填充数字文件名的答案,它可以很好地重命名文件名,如下所示:

1.jpg > 00001.jpg
2.jpg > 00002.jpg
.
.
.
9.jpg > 00009.jpg
Run Code Online (Sandbox Code Playgroud)

使用以下命令:

rename 's/\d+/sprintf("%05d", $&)/e' *.jpg
Run Code Online (Sandbox Code Playgroud)

但我的文件名不是数字。它们是一个字母数字序列,例如:a.jpg, b.jpg, c.jpg...... m.jpg

以与原始问题类似的方式,我想重命名这些,以便它们以正确的顺序显示。我该怎么做呢?

Oli*_*Oli 7

你也可以用零填充字母,你只需要稍微改变我的原始命令:

rename 's/\w+/sprintf("%05s", $&)/e' *.jpg
Run Code Online (Sandbox Code Playgroud)

我们基本上只是说,用零填充的字符串替换第一个“单词”(数字和字母)。它与原版非常相似,只是略有不同。此版本适用于原始问题。

您可以将其扩展为.+匹配项(以零填充所有内容),但是您可能需要在顶部处理扩展。


测试线束:

$ mkdir test; cd test; touch {a..d}.jpg 1.jpg
$ rename 's/\w+/sprintf("%05s", $&)/e' *.jpg
$ ls
00001.jpg  0000a.jpg  0000b.jpg  0000c.jpg  0000d.jpg
Run Code Online (Sandbox Code Playgroud)