我使用 Sound Juicer 翻录了一本语言学习书籍的音频 CD,以便可以在 Android 上收听。但是,Sound Juicer 似乎只能选择对文件进行编号而不使用前导零。如下所示:
track_1.mp3
track_10.mp3
track_11.mp3
这导致我的音乐播放器排序混乱。因此,我想在名称中添加一些零,以便正确排序,如下所示:
track_01.mp3
track_02.mp3
track_03.mp3
我该如何实现这一点?我尝试使用 GPRename,但尽管它可以添加数字,但似乎没有任何添加前导零的选项。
有没有更好的程序或者我可以在命令行上做的事情?
答案1
我假设你只需要重命名文件 1-9,因为这些文件需要填充。有多种方法可以做到这一点。
您可以执行以下命令:
for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;
这会将 tracks track_1.mp3
-重命名track_9.mp3
为track_01.mp3
- track_09.mp3
。
分解一下,它看起来是这样的:
for n in $(seq 9)
do
mv track_$n.mp3 track_0$n.mp3
done
for n in $(seq 9)
:对于命令输出中的每个数字seq 9
,该命令仅列出数字 1 至 9do
,,mv track_$n.mp3 track_0$n.mp3
n
:这是重命名文件的实际命令。它替换迭代所有数字的值。因此它会执行mv track_1.mp3 track_01.mp3
,mv track_2.mp3 track_02.mp3
,直到最后一个数字 9。
答案2
以下脚本将重命名给定目录中的文件。无论文件数量有多少,它都会计算所需的前导零的数量(如果超过 100 个,则需要更多零),并自动重命名文件。
使用它
将下面的脚本复制到一个空文件中,在 headsection 中,设置源目录、前缀(本例中为“track-”)和要重命名的文件的文件扩展名。将其保存为 rename.py 并通过以下命令运行它:
python3 /path/to/script.py
剧本:
#!/usr/bin/env python3
import shutil
import os
sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"
files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))
for item in files:
zeros = maxlen - len(item[2])
shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
答案3
当然有很多方法可以做到这一点。例如,你可以:
- 分离零件
- 填充有数字的部分
- 将各个部分重新连接成新名称
将其放入循环中:
#!/bin/bash
item="track_1.mp3"
part1=`echo $item | awk -F_ '{print $1}'`
part2=`echo $item | awk -F_ '{print $2}'`
part2a=`echo $part2 | awk -F. '{print $1}'`
part2b=`echo $part2 | awk -F. '{print $2}'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname
循环:
#!/bin/bash
for item in track_1.mp3 track_10.mp3 track_11.mp3
do
part1=`echo $item | awk -F_ '{print $1}'`
part2=`echo $item | awk -F_ '{print $2}'`
part2a=`echo $part2 | awk -F. '{print $1}'`
part2b=`echo $part2 | awk -F. '{print $2}'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo "Renaming $item -> $newname"
mv $item $newname
done
enter code here
答案4
编写一个脚本,其工作方式如下命令。
将该文件放在您跟踪文件所在的目录中。
像这样
touch change chmod +x change vim change
在其中写入
#!/bin/bash n=0 for m in {00 .. 99} do mv track_$n.mp3 track_$m n=`expr $n + 1`` done