关于如何添加前导零等数字也有类似的问题,但是在我的情况下,我的文件名有两个数字,即章数和页数。两者都缺少前导零,因此它们没有按字母顺序排序。我想使用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/