ターミナルからさまざまなフォルダ内の .ape と .cue を .flac に一括変換して分割する

ターミナルからさまざまなフォルダ内の .ape と .cue を .flac に一括変換して分割する

44GB (そう、44GB) の.apeCD ファイルのフォルダがあります。それぞれが.ape完全な CD で、通常は.cue各 にファイルがあります.ape。これらを変換する必要がありますが、分割する必要はありません。キュー データがないためです。また、 と もいくつかありますが.jpg.logこれは気にしません。treeコマンド出力がこれを視覚化するのに役立つ場合は、次のようになります。

├── Philips Mozart Collection - 180 CD
│   │   ├── box01-Symphonies
│   │   │   ├── 1B.jpg
│   │   │   ├── 1F.jpg
│   │   │   ├── cd01
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 1) - Neville Mariner, Academy of St. Martin in the Fields.log
│   │   │   │   ├── img421.jpg
│   │   │   │   └── img422.jpg
│   │   │   ├── cd02
│   │   │   │   └── CDImage.ape
│   │   │   ├── cd03
│   │   │   │   ├── CDImage.ape
│   │   │   │   ├── CDImage.ape.cue
│   │   │   │   ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 2) - Sir Neville Marinner - Acadamy of St Martin in the Fields.log
│   │   │   │   ├── img426.jpg
│   │   │   │   └── img427.jpg
│   │   │   ├── cd04

などなど、180 CDS まであります。

.ape基本的に、すべてのファイルを複数のファイルに分割し.flac.cueディレクトリ構造を維持したまま (できれば完全に新しい別のディレクトリに)、 からタグ情報をコピーします。可能であれば、スクリプトではなく 1 行のコマンドを使用します。どうすればよいでしょうか? 方法を知っている方がいらっしゃいましたら、ぜひ教えてください。

そして、誰かがこの質問をこの質問と重複していると報告する前に: すべての .ape ファイルを異なるサブフォルダ内の .flac に変換するただし、そのユーザーは .ape を複数の .flac に分割する必要がなかったことに注意してください。

答え1

これを複数ステップで実行します。これはめったに実行されないためです。ここでは自動化よりも透明性が重要です。ただし、1 行でも可能です。各ステップですべてのファイルに対して 1 つのコマンドのみを使用する場合、これが意図したとおりであると考えられます。

ffmpeg(またはavconv)、shntoolおよびがインストールされている必要がありますcuetools

すべて.ape.flacその場で変換するには:

find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;

APEファイル用のパッチを当てたMACエンコーダとデコーダを 参考:g++の場合、この最初の手順は不要です。ただし、とを使って自分でコンパイルする必要があります。の代わりに使用されることが多い ファイルyasmについても同様です。.tta.ape

スプリットおよび名前 .flacファイル:

find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;

shnsplitも変換に使用される場合は、.flacの部分を"${1%.cue}.flac"変換元の形式の拡張子に置き換えます。

  • %n- トラック番号
  • %p– パフォーマー
  • %t– トラック名

.cueファイル名はファイルから取得されます.flac。分割された.flacファイルにタグを付けるには、次のようにします。

find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;

残りのCDImage.ape.cue、、CDImage.flacおよびCDImage.apeファイルはご自由に削除してください。名前は一意なので、単純なもので十分です。ただし、モーツァルトが、私が知らないfind . -name "CDImage*" -deleteで始まる曲を作った場合は別です。CDImage

動作させるにはshnsplit、ファイルを読み書きできるように、必要なすべてのエンコーダー/デコーダーをインストールする必要があります。APE (および TTA 形式) のモジュールはソースからコンパイルする必要があり、その他のモジュールはパッケージ (FLAC など) をインストールする必要があります。

これは、拡張子を除いて、ファイルと //.cueファイル.ttaが同じ名前であるすべての標準的なケースで機能します。.flac.ape


他の人への補足: この変換を行う場合、ソースファイルは日本語由来である可能性があり、日本語ではAPEとTTAが他の地域よりも普及しています。ファイルが.cue最初はSHIFT-JISでコード化されていて、現在はUTF-8で開かれている場合shnsplit壊れる.cueファイル名を次のように変更する必要があります。

find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +

中間ファイルをUTF-8に変換するには

find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;

上記の手順を実行する前に、以下の.cuxファイルを忘れずに削除してください。

find . -name "*.cux" -delete

関連情報