Использование рекурсии с командным циклом. Какой синтаксис?
Я использую следующий цикл для перекодирования.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
но я думаю, что использование отдельного файла проще и понятнее.