我有一堆恢复的 mp3 文件,这些文件的文件名都是系统生成的。我想使用文件中嵌入的 ID3 标签信息将每个文件重命名为人类可读的名称。
我尝试过 debian apt repo 中的“mp3rename”,但它无法自动处理没有 id3 标记的 mp3 文件。有没有可行的替代方案?
答案1
id3v2
一些脚本应该可以实现这一点。我将查看手册页并尝试编写一个示例,但id3v2 -l file
会列出该文件中的标签。从那里,您可以通过 awk/sed/whatever 管道来获得重命名文件的命令。
答案2
答案3
更具体地说,请查看exiftool
标题为重命名示例。
它不仅限于 MP3 文件。
答案4
如果你喜欢 Perl,获取标签的简单方法是这样的:
#!/usr/bin/env perl
use File::Find;
use MP3::Tag;
use Cwd;
$dir = ".";
open(OUTFILE,">tags.txt") || die "Can't open: $!\n";
print OUTFILE 'Output for "'.getcwd().'"'." and subdirectories\n";
print OUTFILE "Path;Artist;Title;Track;Album;Year;Genre;File Size\n";
find(\&edits, $dir);
close(OUTFILE);
print "Done\n";
sub edits()
{
$fn=$_;
$not_shown=1;
if ( -f and $fn=~m/.+\.mp3$/ig)
{
$mp3 = MP3::Tag->new($fn);
($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo();
$fs= -s $fn;
print OUTFILE "$File::Find::name\\$fn;$artist;$title;$track;$album;$year;$genre;$fs\n";
}
if ( -f and $fn=~m/.+\.wav$|\.m4a$/ig)
{
$fs= -s $fn;
print OUTFILE "$File::Find::name\\$fn;;;;;;;$fs\n";
}
}
从那里开始,只需编写一点脚本,您就能得到您想要的东西。