关于如何添加前导零等数字也有类似的问题,但是在我的情况下,我的文件名有两个数字,即章数和页数。两者都缺少前导零,因此它们没有按字母顺序排序。我想使用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)
man rename
还有其他具有相同名称的工具可能无法执行此操作,因此请小心。

属于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-File-Rename
对于Mac用户:
brew install rename

如果您没有其他发行版的此命令,请搜索软件包管理器以安装它或安装do it manually(无部门...)

该工具最初由Perl的父亲Larry Wall编写。

关于linux - 如何在bash中用前导零替换文件名中的数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62533799/

10-11 22:25