
我有一個 44GB(是的,四十四個).ape
CD 資料夾。每張.ape
都是一張完整的 CD,並且通常.cue
每個.ape
.我需要轉換但不分割它們,因為沒有提示資料可供參考。裡面還有一些.jpg
s和.log
s,我不關心。如果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
,保持目錄結構(最好在一個全新的不同目錄中)。如果可能的話,我更喜歡單行命令而不是腳本。我該怎麼辦呢?感謝任何知道如何做到這一點的人!
在有人將這個問題標記為與此問題重複之前: 將不同子資料夾中的所有 .ape 檔轉換為 .flac,我想指出該用戶不需要將 .ape 拆分為多個 .flac。
答案1
我會分多個步驟來完成此操作,因為您很少這樣做。在這裡,透明度比自動化更重要。但單行也是可能的。我假設如果您每一步僅對所有文件使用一個命令,這就是您的意圖。
您需要有ffmpeg
(或avconv
),shntool
並cuetools
安裝。
要將所有.ape
內容轉換.flac
為:
find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;
如果您安裝了 APE 檔案的修補 MAC 編碼器和解碼器 http://shnutils.freeshell.org/shntool/,這第一步是不必要的。但你需要自己編譯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
in替換"${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