Tengo una carpeta de 44GB (sí, cuarenta y cuatro) de .apearchivos de CD. Cada uno .apees un CD completo, y generalmente hay un .cuearchivo junto con cada uno .ape. Necesito convertir pero no dividir estos, ya que no hay datos de referencia para seguir. También hay algunos .jpgs y .logestá ahí también, que no me importa. Si la treesalida de un comando ayuda a visualizar esto, aquí tienes:
├── 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
etc ... todo el camino hasta 180 CDS.
Básicamente, quiero dividir todos los .apearchivos en varios .flacarchivos y copiar la información de la etiqueta desde .cue, manteniendo la estructura del directorio (preferiblemente en un directorio completamente nuevo y diferente). Prefiero un comando de una sola línea a un script si es posible. ¿Cómo voy a hacer esto? ¡Gracias a cualquiera que sepa cómo hacer esto!
Y antes de que alguien marque esta pregunta como un duplicado de esta aquí: Convierta todos los archivos .ape a .flac en diferentes subcarpetas , me gustaría señalar que ese usuario no necesitaba dividir el .ape en múltiples .flacs.
fuente

Respuestas:
Haría esto en varios pasos, ya que rara vez lo haces. La transparencia es más importante que la automatización aquí. Pero una sola línea también es posible. Supongo que si usa solo un comando para todos los archivos en cada paso, esto es lo que pretendía.
Necesita tener
ffmpeg(oavconv)shntoolecuetoolsinstalar.Para convertir todos sus
.apea.flacen su lugar:Si instala el codificador y decodificador MAC parcheado para archivos APE desde http://www.etree.org/shnutils/shntool/ , este primer paso es innecesario. Pero lo que se necesita para compilar con
g++yyasmusted mismo. Lo mismo ocurre con los.ttaarchivos, que también se usan a menudo en lugar de.ape.Dividir y nombrar
.flacarchivos:Si
shnsplittambién se usa para la conversión, reemplace.flacin"${1%.cue}.flac"con la extensión del formato desde el que está convirtiendo.%n- número de pista%p- intérprete%t- nombre de la pistase toma del
.cuearchivo para los.flacnombres de archivo. Para etiquetar los.flacarchivos divididos resultantes :Elimine el resto
CDImage.ape.cue,CDImage.flacy losCDImage.apearchivos a su gusto. Los nombres son únicos, por lo que un simplefind . -name "CDImage*" -deletees suficiente, excepto si Mozart hizo una composición a partir de laCDImagecual no estoy al tanto.Para
shnsplitque funcione, se deben instalar todos los codificadores / decodificadores necesarios para que pueda leer y escribir archivos. Los módulos para APE (y para el formato TTA) tendrían que compilarse desde la fuente, los otros instalando el paquete (es decir, FLAC).Esto funciona para todos los casos estándar donde
.cuey.tta/.flac/ los.apearchivos tienen el mismo nombre, excepto la extensión.Comentario secundario para otros : si se ocupa de esta conversión, sus archivos de origen podrían ser de origen japonés, donde APE y TTA eran más populares que en otros lugares. Si los
.cuearchivos se codificaron inicialmente con SHIFT-JIS y ahora se abrieron como UTF-8, elshnsplitpaso se interrumpirá . Necesita cambiar el nombre de los.cuearchivos cony convertir los archivos intermedios a UTF-8 con
antes de intentar hacer los pasos anteriores. No olvide deshacerse de los
.cuxarchivos cuando haya terminado con:fuente
-o flaccon shnsplit lugar. No espere encontrar un nombre de base y un ape estándar, ya que el códec / contenedor también se utilizan otros códecs sin pérdida, por lo que es mejor no codificar y sería mejor incluir todos los pasos en una ejecución del comando find.metaflac --add-replay-gainTambién sería una buena idea.find -name '*.ape' -execdir sh -c 'flac="${1%.ape}.flac"; ffmpeg -i "$1" "$flac" && shnsplit -f CDImage.ape.cue "$flac" && cuetag CDImage.ape.cue "$flac"' _ {} \: