MP3曲の一括名前変更

MP3曲の一括名前変更

私はtestdiskを使って何十万もの.mp3曲を復元し、ディレクトリに次のような結果を得ました。

f196833984.mp3

ただし、Rhythmboxにロードすると、生のマークアップとして表示されます。

私が望むのは、命名を削除し、それをタグ情報に置き換えて、ディレクトリにその情報を表示することです。

今何が起こっているのかについてのイメージがあります。 ここに画像の説明を入力してください。

これが出力です

id3v2 -l f194867904.mp3

id3v2から:

> id3v1 tag info for f194867904.mp3:
Title  : "Sempre libera"                 Artist: Anna Netrebko                 
Album  : Rolando Villaz�n / Violetta -   Year: 2005, Genre: Classical (32)
Comment: Easy CD-DA Extractor            Track: 5
id3v2 tag info for f194867904.mp3:
TIT2 (Title/songname/content description): "Sempre libera"
TPE1 (Lead performer(s)/Soloist(s)): Anna Netrebko
TPE2 (Band/orchestra/accompaniment): Anna Netrebko
TALB (Album/Movie/Show title): Rolando Villazón / Violetta - Arias and Duets from Verdi's La Traviata
TYER (Year): 2005
COMM (Comments): ()[XXX]: Easy CD-DA Extractor
TCON (Content type): Classical (32)
TRCK (Track number/Position in set): 5

ありがとうございます。今、私がしたことと結果を正確に示す画像で結果を投稿しています。一番左の画像は、一番右の端末にリストされた曲フォルダです。曲がどこに行ったのかわかりません。しかし、一つ残り、この記事を書いている間、私はそれを楽しんでいます。以下の画像に示すように、VLCでこれを確認できます。 ここに画像の説明を入力してください。

答え1

シェルスクリプトのアイデアが気に入らない場合は本当にそうです。水たまりタグ私の音楽ファイルのタグを管理します。あなたはできますタグに基づいてバッチの名前変更ファイルマウスを数回クリックするだけです。

答え2

一つだけ使いたいforループディレクトリ内の各ファイルを繰り返します。

各繰り返しではffプローブタグをダンプしてからgrepテキストをフィルタリングしてインポートするタイトルそしてアーティスト別の変数にきれいなテキスト文字列として使用されます。

最後に、ファイル名を 'Artist - Title.ext' に変更します。


重要:これらのファイルのいくつかを新しい別々の(または空の)ディレクトリにコピーします。

その後、すべてのファイルに対してスクリプトを実行する前に、そのディレクトリの内容に対してテスト実行を実行します。予期しないことが発生した場合は、データの損失を防ぐのに役立ちます。


例:


for fN in * ;do
  strTags="$(2>&1 ffprobe -loglevel quiet -show_entries format_tags=artist,title "${fN}"|grep 'TAG:.*=.*$')"

  strTitle="$(echo "${strTags}"|grep 'TAG:title=.*$')"
  strArtist="$(echo "${strTags}"|grep 'TAG:artist=.*$')"

  mv "${fN}" "${strArtist:10}"' - '"${strTitle:9}${fN: -4:4}"

done

答え3

何かをする前に記事全体を読んでください

#!/bin/bash

for file in $(ls $1)
do
  line=$(id3v2 -l $file | sed -n '2p')
  title=$(echo $line | cut -d '"' -f 2 | sed 's/ /_/g')
  artist=$(echo $line | cut -d ':' -f 3 | awk '{$1=$1};1' | sed 's/ /_/g')
  mv $1/$file $1/$artist-$title
done

これにより、各ファイルの名前が<アーティスト名><曲のタイトル>に変わり、その間にダッシュが追加されます。

これを別の名前で保存し(例:script.sh)、実行可能にし(chmod + x script.sh)、ターゲットディレクトリを指定して実行します。例:

./script.sh <target directory>

ターゲットディレクトリに名前を変更したい曲だけが含まれていることを確認してください。
Enterを押す前に構文が正しいことを確認してください。
私はあなたが投稿した例でのみこれをテストしました。

不適切に使用できるシステムを台無しにするこのスクリプトが誤ったls呼び出しを受け取った場合。他の潜在的な問題を回避するには、新しいディレクトリを作成して約5〜10曲の曲をコピーし、そこからスクリプトを実行して、必要に応じて正しく機能することを確認することをお勧めします。

自分の責任で使用してください

関連情報