Пакетное преобразование и разделение .ape с .cue to .flac в различных папках с терминала

У меня есть папка .ape CD-файлов размером 44 ГБ (да, сорок четыре). Каждый .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, сохраняя структуру каталогов (предпочтительно в совершенно новом и другом каталоге). Я предпочитаю однострочную команду скрипту, если это возможно. Как бы я пошел по этому поводу? Спасибо всем, кто знает, как это сделать!

И прежде чем кто-либо пометит этот вопрос как дубликат этого вопроса здесь: Конвертировать все файлы .ape в .flac в разных подпапках , я бы хотел хотел бы отметить, что этому пользователю не нужно было разбивать .ape на несколько .flacs.

9
задан 13 April 2017 в 15:23

1 ответ

Я сделал бы это на нескольких шагах, так как Вы редко делаете это. Прозрачность более важна, чем автоматизация здесь. Но одна строка также возможна. Я предполагаю, что при использовании только одной команды для всех файлов каждый шаг это - то, что Вы предназначили.

Вы должны иметь ffmpeg (или avconv), shntool и cuetools установленный.

Преобразовать все Ваш .ape кому: .flac на месте:

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

При установке исправленного кодера MAC и декодера для файлов APE из http://www.etree.org/shnutils/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 в "${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 достаточно, кроме того, если Mozart сделал состав, запускающийся с 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
6
ответ дан 14 April 2017 в 01:23
  • 1
    Г-н Pilot6 Вы - мой герой дня! Возможно, можно ли также сказать мне, как заставить личинку использовать то новое ядро? – marco 23 August 2017 в 00:01

Другие вопросы по тегам:

Похожие вопросы: