Использование рекурсии с командным циклом. Какой синтаксис?

Я использую следующий цикл для перекодирования.flac -> .mp3:

for file in *.flac; do $(flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"); done

Каталог, конечно, должен содержать файлы.flac, чтобы это работало. То, что я хотел бы научить, это синтаксис, чтобы заставить эту команду работать рекурсивно. Цель состоит в том, чтобы перейти в каталог, содержащий все подкаталоги файлов.flac, и выполнить командный цикл через них все.

Заранее большое спасибо.

1 ответ

Решение

Создайте файл ~/bin/flac2mp3 с содержимым:

#!/bin/bash
file="$1"
flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"

Тогда беги find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;

Это можно сделать без использования отдельного файла для ~/bin/flac2mp3 но я думаю, что использование отдельного файла проще и понятнее.

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