- Published on
Bashでオーディオファイルのファイル名を曲名に変更する
- Authors
- Name
- Shou Arisaka / 有坂翔
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 - 曲名1
02 - 曲名2
03 - 曲名3
04 - 曲名4
05 - 曲名5
06 - 曲名6
07 - 曲名7
08 - 曲名8
09 - 曲名9
10 - 曲名10
11 - 曲名11
12 - 曲名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 - 曲名1.flac 04 - 曲名4.flac 07 - 曲名7.flac 10 - 曲名10.flac names.txt
02 - 曲名2.flac 05 - 曲名5.flac 08 - 曲名8.flac 11 - 曲名11.flac
03 - 曲名3.flac 06 - 曲名6.flac 09 - 曲名9.flac 12 - 曲名12.flac