2014年9月4日木曜日

Amazon Musicのファイル名

Amazon.co.jpで音楽を買った。ダウンロードしてみたら、iTnuesで使われているファイル名に似ているが、曲番号の後ろに余計なハイフンがある。こだわらなければどうでもいい問題かも知れないが、こういうところが気になる。

サクッとシェルスクリプトで治すことにしたい。(こう書いておいて2時間ほど無意味なGoogle検索をしたのは秘密である)

ダウンロードしたファイル名は次のようになっている。

01-01- I Feel Pretty.mp3
01-02- Misty (Live At Tivoli Garden, Copenhagen1963).mp3
01-03- What Is This Thing Called Love.mp3

これを次のようにしたい。

01-01 I Feel Pretty.mp3
01-02 Misty (Live At Tivoli Garden, Copenhagen1963).mp3
01-03 What Is This Thing Called Love.mp3

カギは、曲番号と曲名の間にあるスペースである。これを使って、ファイル名を曲番号部分と曲名部分に分け、曲番号部分の最後の一文字を除去して再び曲名部分と合体させる。これで処理が簡単になる。

#!/bin/sh

find . -type f | while read i #(1)
do
fNumpart=`echo "$i" | cut -d ' ' -f 1` #(2)
fNamepart=`echo "$i" | cut -d ' ' -f 2-` #(3)
newNumpart=`sed s'/.$//' <<< "$fNumpart"` #(4)
mv "$i" "$newNumpart $fNamepart" #(5)
done
exit 0

その道に通じている方には恥ずかしくて見せられないスクリプトだが、何をやっているか説明すると、

  1. findtype fなので階層構造があってもそのディレクトリにあるファイルをすべて抽出、それを順番に i として読み出している。 find でなく ls でも良いかも知れない。
  2. 半角スペースを区切り文字(デリミタ)として、最初のフィールド(曲番号部分)を切り出している。
  3. 上と同じ方法で残り(曲名部分)を切り出している。
  4. 曲番号部分の最後の1文字を削除している。
  5. ファイル名を修正されたファイル名に変更している。

以上である。

使い方。上記内容をRemove Hyphen from Amazon Music.shという名前でファイルに保存した場合、次のようになる。

cd ~/Music/"Amazon Music"
sh "Remove Hyphen from Amazon Music.sh"

(注:スクリプトを音楽ファイルと同じフォルダに置かないように!)

ダウンロードしたい方は こちら からどうぞ!

2015.7.6改訂
シェルスクリプトおよび使い方の説明変更。

0 件のコメント :

コメントを投稿