我有一个很大的音乐文件目录,其标题遵循以下格式:
Title_stringOfNumbers - Artist.mp3我的目标是删除下划线,后面跟着数字,并将艺术家的名字与标题切换。
例如,原始文件名是:
whats up_7979841261 - randomArtist.mp3我想要的文件名:
randomArtist - whats up.mp3标题可以包含特殊字符('、!、.、_、(、)、/、\甚至是日本字符)和数字,但在文件名的第一部分中,下划线字符和数字永远不会相邻(因此没有multiple word title_2_6878492178471289 - artist.mp3-like文件)。
到目前为止,我尝试使用终端中的rename命令删除下划线,但是遇到了一个路障,因为这一行没有做任何事情,而且我不熟悉使用它。
rename 'y/_//' *这都是使用POP!_OS 21.10,所以任何与Ubuntu一起工作的东西也应该适用于我的系统。我使用了Perl脚本rename (与sudo apt install rename一起安装)。但是,我发现我的系统上安装了这三个变体 (rename、prename、file-rename)。
发布于 2022-01-20 09:29:57
您可以使用(Perl) rename:
rename -n 's/^(.*)(_\d+) - (.*)\.mp3$/$3 - $1.mp3/' *.mp3删除-n,以便在结果良好的情况下实际运行操作。
如果您的文件有正确的id3标记,最好使用以下标记重命名:
例如mp3rename或exiftool
sudo apt install mp3rename
mp3rename -s '&a - &t'
mp3rename *.mp3发布于 2022-01-20 09:37:18
使用循环、mv和参数替换:
for i in *.mp3; do
a="${i##* - }" # randomArtist.mp3
n="${i%% - *}" # whats up_7979841261
t="${a%%.*} - ${n//_[0-9]*/}.mp3" # randomArtist - whats up.mp3
echo mv -- "$i" "$t" # mv -- randomArtist - whats up.mp3 → whats up - randomArtist.mp3
# mv -- "$i" "$t"
done在应用一个好主意之前,是一个备份。如果您对回显显示的内容感到满意,则会注释实际的mv命令,然后取消注释并运行。
https://unix.stackexchange.com/questions/687159
复制相似问题