プログラミング

Bashでオーディオファイルのファイル名を曲名に変更する

CDを読み取ったけど、freedbとかコンフィグファイルから読み取れるはずのオーディオファイルのメタデータが取得できず、困ったりします。
それで仕方なく、リッピングしてwavやflacにしてみたけど、やっぱ曲名もなにも書いてなくて、”track 01″みたいな感じじゃ、わかりにくいし、管理もクソもないですよね。

そういう場合に使えるスクリプトを書いてみました。Bashとかのシェルスクリプトは他のライトウェイト言語と違う癖があって、少し複雑なもの書こうとすると結構時間取られるんですよねぇ…。

必要条件:ファイル名が何らかの形で連番していること(トラックナンバーが含まれているなど)
必要なもの:トラックナンバーに連動して新しいファイル名(タイトル)が一行ずつ書かれたファイル<<e.g.names.txt>>

e.g.

$ ls
01 Track01.flac  03 Track03.flac  05 Track05.flac  07 Track07.flac  09 Track09.flac  11 Track11.flac
02 Track02.flac  04 Track04.flac  06 Track06.flac  08 Track08.flac  10 Track10.flac  12 Track12.flac
$ cat > names.txt
01 - クレイジークレイジーダンサーズ
02 - 零次元エクスプレス
03 - Colors
04 - ARROW RAIN
05 - 真夏の蜜と唇
06 - 迷夢ソウル
07 - Princess Lily
08 - 抜刀
09 - Together Going My Way
10 - Addicted Moon
11 - Colorless
12 - 全力ハッピーライフ

エラー対処で一応実行 :sed -i $'s/\t//' names.txt

スクリプト

i=1
for f in *.flac ; do
name=$(sed "$(echo $i)q;d" names.txt)
mv "$f" "$name.flac"
i=$((i+1))
done

.flac.wavとか適当なものに。

実行後

$ ls
01 - クレイジークレイジーダンサーズ  .flac  04 - ARROW RAIN  .flac    07 - Princess Lily  .flac          10 - Addicted Moon  .flac     names.txt
02 - 零次元エクスプレス  .flac              05 - 真夏の蜜と唇  .flac  08 - 抜刀  .flac                   11 - Colorless  .flac
03 - Colors  .flac                          06 - 迷夢ソウル  .flac    09 - Together Going My Way  .flac  12 - 全力ハッピーライフ.flac

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です