Кодирование аудио файлов с последующим переименованием их с помощью скрипта - PullRequest
0 голосов
/ 07 июня 2011

Я пишу сценарий Bash, который будет работать в Linux для преобразования / кодирования аудиофайлов

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

Файл с именем Audio-001.flac должен быть переименован в 2552011-Unit05-Fil001.flac в соответствии с шаблоном: [Идентификатор блока записи даты-записи ID-файла]

Код, который я использую для переименования:

echo "Enter Recording Date, Recording Unit-ID, and File-ID Separated by SPACE"

read RD RU FID

echo "Your input is: $RD, $RU, $FD " >> /home/user-name/Music/User-Input.txt #This is for logging

mv $FLACS/*.flac $FLACS/${RD}-${RU}-${FID}.$flac

Я получаю сообщение об ошибке: mv: target 22112011-Unit05-File0. is not a directory

Можно ли использовать find и sed?

find bar -iname "*.wav" -printf 'mv %p %p\n' \

   | sed 's/*\.wav$/${RD}-${RU}-${FID}\.flac/' \
   | while read l; do eval $l; done`

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Хорошая разбивка необходимых работ, поэтому:

1 - Разобрать дерево папок (полное .WAV файлов)

Это можно сделать несколькими способами, форма:

find WHERE -print | grep -i PATTERN #or
find WHERE -name ... print0 | xargs -0 -I% ....  #or the simple
echo ./**/*.wav

2 - используйте инструмент с открытым исходным кодом, такой как flac и ffmpeg преобразовать все файлы .WAV в этом дереве папок в .FLAC

Да, вы правы. Общий синтаксис

flac [<general-options>] [<format-options>] [<encoding options>] [inputfile [...]]

3- Поместите файлы .FLAC в новый созданное дерево папок, идентичное к оригиналу

Не сложная задача. В Linux вы можете создать каталог с помощью команды mkdir. Вы можете получить идентичное дерево из команды поиска (1). Вероятно, потребуется также использовать команду dirname. (есть и другие способы, но dirname это хорошо)

4 - при названии нового .FLAC и их соответствующие папки это добавит уникальный идентификатор для имен файлов т.е. папка с именем 2582001 содержит файлы 2582001-1.wav и 2582001-2.wav будет воссоздан и будет содержать два .FLAC файлы с именами 2582001-REC05-FIL1.FLAC и 2582001-REC05-FIL2.FLAC. это структура новых имен файлов [Дата записи - Идентификатор устройства записи - Идентификатор файла].

Опять не сложная задача, вы можете использовать следующее:

command > "${RecordingDate} - ${RecordingUnitID} - ${FileID}"

но не рекомендую это. Конечно, будет лучше назвать файлы без пробелов, например:

command > "${RecordingDate}-${RecordingUnitID}-${FileID}"

если вы хотите переименовать файл, используйте команду mv, например:

mv oldfilename.ext "${RecordingDate}-${RecordingUnitID}-${FileID}.$newext"

Ps: если вы хотите более точный ответ, попробуйте задать более точный. :)

0 голосов
/ 11 июня 2011

Вы пытаетесь mv больше файлов в "один файл".

mv $FLACS/*.flac $FLACS/${RD}-${RU}-${FID}.$flac

*.flac расширяется до большего количества файлов.Вы не можете переместить больше файлов в один.При перемещении большего количества файлов mv хочет в качестве своего последнего аргумента каталог.

Вы, вероятно, хотите:

mv $FLACS/some_one_file.flac  $FLACS/${RD}-${RU}-${FID}.flac
...