将文件名中的前导数字更改为固定宽度
Change leading numbers in file names to fixed width
我有一大组音频文件,它们都以可变长度数字开头,后跟 space-短划线-space(即 " - "
)。这之后的文本是可变的。其中一些文件包括:
12 - Buckle my Shoe.mp3
42 - The Meaning of Life.m4a
12321 - Palindromes and other stuff.wav
例如,我如何转换所有文件名,以便前导整数的宽度最多填充 6 个字符,并带有前导零?即:
000012 - Buckle my Shoe.mp3
000042 - The Meaning of Life.m4a
012321 - Palindromes and other stuff.wav
我这样做是因为我的有声读物播放器无法正确排序文件,除非文件名中的数字前导零填充且宽度固定。
我有一个冗长的 bash 脚本,几乎可以完成此任务,但我希望有一个更简单的单行代码,我可以通过命令行使用。另外,我希望为此学习最小的正则表达式。
此外,如果有一种快速简便的方法来计算最长的前导整数并使用它来代替我的任意 6
,那也是加分项!
谢谢。
如果你有 rename
的 Perl 版本,你可以这样做:
rename 's/^(\d+)/sprintf "%06d", /e' *
来自 rename
的替代方法:使用 awk
的 sprintf
函数填充第一个字段。
for file in * ;
do
mv "$file" "$(awk '{=sprintf("%06d", )}1' <<< "$file")";
done
输入文件:
ls -lrt
total 0
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 12321 - Palindromes and other stuff.wav
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 12 - Buckle my Shoe.mp3
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 42 - The Meaning of Life.m4a
输出文件:
ls -lrt
total 0
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 012321 - Palindromes and other stuff.wav
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 000012 - Buckle my Shoe.mp3
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 000042 - The Meaning of Life.m4a
我有一大组音频文件,它们都以可变长度数字开头,后跟 space-短划线-space(即 " - "
)。这之后的文本是可变的。其中一些文件包括:
12 - Buckle my Shoe.mp3
42 - The Meaning of Life.m4a
12321 - Palindromes and other stuff.wav
例如,我如何转换所有文件名,以便前导整数的宽度最多填充 6 个字符,并带有前导零?即:
000012 - Buckle my Shoe.mp3
000042 - The Meaning of Life.m4a
012321 - Palindromes and other stuff.wav
我这样做是因为我的有声读物播放器无法正确排序文件,除非文件名中的数字前导零填充且宽度固定。
我有一个冗长的 bash 脚本,几乎可以完成此任务,但我希望有一个更简单的单行代码,我可以通过命令行使用。另外,我希望为此学习最小的正则表达式。
此外,如果有一种快速简便的方法来计算最长的前导整数并使用它来代替我的任意 6
,那也是加分项!
谢谢。
如果你有 rename
的 Perl 版本,你可以这样做:
rename 's/^(\d+)/sprintf "%06d", /e' *
来自 rename
的替代方法:使用 awk
的 sprintf
函数填充第一个字段。
for file in * ;
do
mv "$file" "$(awk '{=sprintf("%06d", )}1' <<< "$file")";
done
输入文件:
ls -lrt
total 0
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 12321 - Palindromes and other stuff.wav
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 12 - Buckle my Shoe.mp3
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 42 - The Meaning of Life.m4a
输出文件:
ls -lrt
total 0
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 012321 - Palindromes and other stuff.wav
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 000012 - Buckle my Shoe.mp3
-rw-r--r-- 1 ps ps 0 Jun 14 01:56 000042 - The Meaning of Life.m4a