Хромое сжатие mp3 файлов рекурсивно

Я хочу сжать всю свою музыкальную коллекцию (на самом деле ее копию), используя lame. Естественно, в папках есть папки и возможные странные символы в именах файлов. Я также использовал графический преобразователь звука , но он мне не понравился, так как он имеет предопределенные битрейты.

То, что я пробовал до сих пор:

$ find . -name "*.mp3" | lame -b 160

и

$  find . -name "*.mp3" > list 
$ cat list | lame -b 160

и

$ lame -b 160 < list

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

4
задан 19 April 2015 в 12:45

2 ответа

lame не может читать в именах файлов из входа. Необходимо будет использовать find -exec или xargs выполнять его по каждому найденному файлу:

find . -iname '*.mp3' -exec lame -b {} \;

Если второе имя файла не указано, lame присоединит другого .mp3 к данному имени файла и записи в тот файл. lame не поддерживает запись в тот же файл. Необходимо будет преобразовать в другой файл, затем скопировать его по исходному файлу:

find . -iname '*.mp3' -exec sh -c 'lame -b 160 "$0" "$0"-160 && mv "$0"-160 "$0"' {} \;
6
ответ дан 19 April 2015 в 22:45

Попробуйте следующее:

Запускаются с удаления пробелов от имен файлов, так как они, кажется, доставляют неприятности:

for f in $(find . -name "*.mp3"); do rename "s/\s+/_/g" *; done

Выполняют цикл и пересечение через все файлы:

for f in $(find . -name "*.mp3"); do lame -b 160 "$f" tmp && mv tmp "$f"; done

Теперь Вы перезапишете исходные файлы с созданными Ламе.

2
ответ дан 19 April 2015 в 22:45

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

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