Eu faria isso em várias etapas, já que você faz isso raramente. A transparência é mais importante que a automação aqui. Mas uma única linha também é possível. Eu suponho que se você usar apenas um comando para todos os arquivos em cada etapa, é isso que você pretendia.
Você precisa ter ffmpeg (ou avconv ), shntool e cuetools instalado.
Para converter todos os seus .ape para .flac no lugar:
find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "" "${1%.ape}.flac"' _ {} \;
Se você instalar o codificador MAC codificado e o decodificador para arquivos APE do link , este primeiro passo é desnecessário. Mas você precisaria compilar com g++ e yasm . O mesmo vale para os arquivos .tta , que também são usados com frequência em vez de .ape .
Divida e nomeie .flac arquivos:
find . -name "*.cue" -exec sh -c 'exec shnsplit -f "" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;
Se shnsplit também for usado para a conversão, substitua o .flac in "${1%.cue}.flac" pela extensão do formato do qual você está convertendo.
-
%n- número da faixa -
%p- executante -
%t- nome da faixa
é obtido do arquivo .cue para os nomes dos arquivos .flac . Para marcar os arquivos .flac divididos resultantes:
find . -name "*.cue" -execdir sh -c 'exec cuetag "" *.flac' _ {} \;
Remova os arquivos restantes CDImage.ape.cue , CDImage.flac e CDImage.ape como quiser. Os nomes são únicos, então um simples find . -name "CDImage*" -delete é suficiente, exceto se Mozart fez uma composição começando com CDImage , que eu não conheço.
Para que shnsplit funcione, todos os codificadores / decodificadores necessários precisam ser instalados para que possam ler e gravar arquivos. Módulos para APE (e para o formato TTA) precisariam ser compilados da fonte, os outros pela instalação do pacote (ou seja, FLAC).
Isso funciona para todos os casos padrão em que os arquivos .cue e .tta / .flac / .ape têm o mesmo nome, exceto a extensão.
Observação lateral para os outros : Se você lidar com essa conversão, seus arquivos de origem podem ser de origem japonesa, onde o APE e o TTA eram mais populares do que em outros lugares. Se os arquivos .cue foram inicialmente codificados por SHIFT-JIS e agora abertos como UTF-8, a shnsplit step quebrará . Você precisa renomear os arquivos .cue com
find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +
e converta os arquivos intermediários para UTF-8 com
find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- ""' _ {} \;
antes de tentar executar as etapas acima. Não se esqueça de se livrar dos arquivos .cux quando terminar:
find . -name "*.cux" -delete