web-dev-qa-db-ja.com

ID3タグ情報に基づいてMP3ファイルの名前を一括変更する、またはID3情報が存在しない場合はランダムな名前を付けるLinuxコマンドラインツール

システムで生成されたファイル名を持つ回復されたmp3ファイルがたくさんあります。ファイルに埋め込まれたID3タグ情報を使用して、それぞれの名前を人間が読める形式に変更したいと思います。

Debian aptリポジトリから「mp3rename」を試しましたが、id3タグが自動的に付けられていないmp3ファイルを処理しません。実行可能な代替手段はありますか?

5
rutherford

id3v2そしていくつかのスクリプトはこれを可能にするはずです。マニュアルページを調べて例を書いてみますが、id3v2 -l fileはそのファイルのタグを一覧表示します。そこから、awk/sed/whateverをパイプ処理して、ファイルの名前を変更するコマンドを作成できます。

2
Rob

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";
        }
}

そこから、少しスクリプトを書くだけで、必要なものが手に入ります。

3
kmort

exiftoolを見てください。具体的には、RENAMING examplesというタイトルのマンページセクションをご覧ください。

MP3ファイルだけに限定されません。

1
user1338062

Kid からkid3-cliツールコマンドを試すことができます

例:

kid3-cli -c 'fromtag "%{track}__%{album}__%{title}" 1' *.mp3
1
SebMa

これはコマンドラインではありませんが、EasyTagは私がいつも使用しているものです。カバーやCDのアートワークをファイルに追加することもできます。