关于如何添加带前导零的数字等也有类似的问题,但就我而言,我的文件名有两个数字,即章节数和页数。两者都缺少前导零,因此它们不是按字母顺序排序的。使用 rename
或任何其他我想要转换的文件,如下所示:
file_1_1.mp3 to file_01_01.mp3
file_1_12.mp3 to file_01_12.mp3
file_12_1.mp3 to file_12_01.mp3
...
我尝试过这个:
rename 's/\d+/sprintf("%02d",$&)/e' *.mp3
但它只是在章节号中添加前导零。
最佳答案
像这样:
rename -n 's/(\d+)_(\d+)\./sprintf("%02d_%02d.", $1, $2)/e' *.mp3
当输出看起来不错时删除 -n
开关
输出
rename(file_1_12.mp3, file_01_12.mp3)
rename(file_1_1.mp3, file_01_01.mp3)
rename(file_12_1.mp3, file_12_01.mp3)
还有其他同名工具可能能够也可能无法执行此操作,因此请小心。
作为 util-linux
包一部分的重命名命令不会。
如果运行以下命令 (GNU
)
$ rename
并且您看到perlexpr
,那么这似乎是正确的工具。
如果没有,请将其设为 Debian
和 Ubuntu
等衍生版本上的默认设置(通常已经是这种情况):
$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename
对于 archlinux:
pacman -S perl-rename
对于 RedHat 系列发行版:
yum install prename
“prename”包位于 EPEL 中存储库。
对于 Gentoo:
emerge dev-perl/rename
对于 *BSD:
pkg install gprename
或p5-文件重命名
对于 Mac 用户:
brew install rename
如果您的其他发行版没有此命令,请搜索您的软件包管理器来安装它或 do it manually (没有部门...)
这个工具最初是由 Perl 之父 Larry Wall 编写的。
关于linux - 如何在 bash 中用前导零替换文件名中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62533799/