批量重命名文件,文件名以零开头且有变化

批量重命名文件,文件名以零开头且有变化

我有一组文件:

foo_1_somestring.txt
foo_2_adifferentstring.txt
....
foo_124_anotherstring.txt

我想将它们批量重命名为:

foo_001_somestring.txt
foo_002_adifferentstring.txt
....
foo_124_anotherstring.txt

我如何在 Windows 10 或 Linux 中执行此操作?

ETA:这个问题是关于如何批量重命名一组文件,使它们遵循允许文件按数字排序的命名约定,即用适当数量的零填充编号文件,以便它们可以按名称排序,而文件 2 不会出现在文件 125 之前。

我找不到另一篇帖子来解决这个问题,文件名中有一部分保持不变(开头的“foo_”),还有一部分变化

答案1

在 Linux 上,假设您想要 3 位数字,并且该数字始终位于 2 个下划线之间:

sudo apt install rename
rename 's/_([0-9]+)_/sprintf("_%03d_",$1)/e' foo*

rename程序可能已安装。这是一个简单的程序,它接受 Perl 表达式并使用它来重命名给定的文件,或foo*在本例中。此处的 Perl 表达式捕获括号之间的数字并使用sprintf将其转换为 3 位数字。使用%04d上面的 , 表示 4 位数字。

这也可以在使用 WSL 的 Windows 10 上运行。

相关内容