我想要一个 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