将多个音频文件中的文件名替换为标题

将多个音频文件中的文件名替换为标题

我想要一个 CLI 或 GUI 解决方案,用于将每个文件的文件名替换为该文件的标题。

我有多个广播播客,其文件名无法正确显示内容。这在标题下的媒体播放器中可见,但我有在文件管理器中查看这些内容时出现问题,所以我想用标题替换文件名。

我正在寻找 Linux 原生工具,虽然我知道如何在 Wine 中使用 Foobar2000 这样的程序来做到这一点。

评论后编辑:这些是 mp3 文件。我可以看到 Dolphin 文件管理器的信息面板中显示的标题数据。

答案1

如果您正在寻找原生工具某些发行版提供命令行mp3rename,以及 gui pyrenamer

对于前者,首先设置“标题”( &t)的格式

mp3rename -s '&t'

然后你可以通过mp3rename给它一个文件名列表来运行它们来重命名你的文件。例如,如果您位于包含 mp3 文件的目录中,则键入mp3rename *.mp3.或者您可以递归搜索*.mp3从某个起始目录 ABC 命名的文件,例如

find ABC -name '*.mp3' -exec mp3rename {} \;

您可能需要处理文件的副本以确保不会出现意外!

对于图形用户界面锥体,更高版本有一个选项卡Music,您可以在其中“使用其元数据重命名音乐”。将字符串放入{title}.mp3此字段中,选择要操作的文件,然后单击Preview以查看名称将变成什么。

在此输入图像描述

答案2

佩尔怎么样?它是 Linux 原生的。我的测试设置如下...脚本与包含我们将要处理的歌曲的目录mp3.pl位于同一目录中。music我将其作为命令行参数传递。该代码迭代此目录,获取所有 mp3 文件。然后它会迭代曲目列表,一次一个,将它们重命名为曲目标题:

首先,看看我们有哪些曲目:

$ ls music
track1.mp3  track2.mp3

代码:

use warnings;
use strict;

use File::Copy;
use File::Find::Rule;
use MP3::Tag;

if (! @ARGV){
    print "usage: perl mp3.pl <directory>\n";
    exit;
}

my $dir = $ARGV[0];

my @files = File::Find::Rule->file()
                            ->name('*.mp3')
                            ->in($dir);

for my $track (@files){
    my $mp3 = MP3::Tag->new($track);

    my $title = $mp3->title;
    $title .= '.mp3';

    move $track, "$dir/$title" or die $!;
}

运行:

perl mp3.pl music

更改后的“音乐”目录:

$ ls music/
Almost Famous.mp3  No Love (feat Lil Wayne).mp3

相关内容