
Ich habe einen 44 GB (ja, vierundvierzig) großen Ordner mit .ape
CD-Dateien. Jede .ape
ist eine vollständige CD, und normalerweise liegt .cue
jeder eine Datei bei .ape
. Ich muss diese konvertieren, aber nicht aufteilen, da es keine Cue-Daten gibt, nach denen ich mich richten könnte. Es sind auch einige .jpg
s und .log
s darin, die mir egal sind. Wenn eine tree
Befehlsausgabe hilft, dies zu visualisieren, hier ist sie:
├── 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
usw. … bis hin zu 180 CDS.
Im Grunde möchte ich alle .ape
Dateien in mehrere .flac
Dateien aufteilen und die Tag-Informationen aus kopieren, .cue
wobei die Verzeichnisstruktur erhalten bleibt (vorzugsweise in einem völlig neuen und anderen Verzeichnis). Wenn möglich, bevorzuge ich einen einzeiligen Befehl gegenüber einem Skript. Wie gehe ich dabei vor? Vielen Dank an alle, die wissen, wie das geht!
Und bevor jemand diese Frage als Duplikat dieser hier kennzeichnet: Konvertieren Sie alle .ape-Dateien in .flac in verschiedenen Unterordnern, möchte ich darauf hinweisen, dass dieser Benutzer die .ape-Datei nicht in mehrere .flacs aufteilen musste.
Antwort1
Ich würde das in mehreren Schritten machen, da man das selten macht. Transparenz ist hier wichtiger als Automatisierung. Aber auch eine einzelne Zeile ist möglich. Ich gehe davon aus, dass es das ist, was du beabsichtigt hast, wenn du pro Schritt nur einen Befehl für alle Dateien verwendest.
Sie müssen ffmpeg
(oder avconv
) shntool
und cuetools
installiert haben.
So konvertieren Sie alle Ihre .ape
Daten .flac
direkt vor Ort:
find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;
Wenn Sie den gepatchten MAC-Encoder und -Decoder für APE-Dateien installieren von http://shnutils.freeshell.org/shntool/, dieser erste Schritt ist unnötig. Sie müssten es jedoch selbst mit g++
und kompilieren yasm
. Dasselbe gilt für .tta
Dateien, die auch oft anstelle von verwendet werden .ape
.
Teiltund Name .flac
Dateien:
find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;
Wenn shnsplit
auch für die Konvertierung verwendet wird, ersetzen Sie „ .flac
in“ "${1%.cue}.flac"
durch die Erweiterung des Formats, aus dem Sie konvertieren.
%n
- Titelnummer%p
– Darsteller%t
– Titelname
.cue
wird für die Dateinamen aus der Datei übernommen .flac
. So kennzeichnen Sie die resultierenden, aufgeteilten .flac
Dateien:
find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;
Entfernen Sie die verbleibenden CDImage.ape.cue
, CDImage.flac
, und CDImage.ape
Dateien nach Belieben. Die Namen sind eindeutig, daher find . -name "CDImage*" -delete
reicht ein einfacher Name aus, es sei denn, Mozart hat eine Komposition geschrieben, die mit beginnt, CDImage
was mir nicht bekannt ist.
Damit shnsplit
es funktioniert, müssen alle notwendigen Encoder/Decoder installiert sein, damit es Dateien lesen und schreiben kann. Module für APE (und für das TTA-Format) müssen aus dem Quellcode kompiliert werden, die anderen durch die Installation des Pakets (z. B. FLAC).
Dies funktioniert für alle Standardfälle, in denen .cue
und .tta
/ .flac
/ .ape
Dateien bis auf die Erweiterung denselben Namen haben.
Randbemerkung für Andere: Wenn Sie diese Konvertierung durchführen, könnten Ihre Quelldateien japanischen Ursprungs sein, wo APE und TTA verbreiteter waren als anderswo. Wenn die .cue
Dateien ursprünglich SHIFT-JIS-kodiert waren und nun als UTF-8 geöffnet werden, ist der shnsplit
Schrittwird brechen. Sie müssen die .cue
Dateien umbenennen mit
find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +
und konvertieren Sie die Zwischendateien in UTF-8 mit
find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;
bevor Sie versuchen, die oben genannten Schritte auszuführen. Vergessen Sie nicht, die Dateien zu löschen, .cux
wenn Sie fertig sind mit:
find . -name "*.cux" -delete