Usando recursão com um loop de comando. Qual a sintaxe?

1

Eu uso o seguinte loop para fazer .flac - > transcodificação de .mp3:

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

O diretório, obviamente, deve conter arquivos .flac para que isso funcione. O que eu gostaria de aprender é a sintaxe para fazer este comando funcionar recursivamente. O objetivo é fazer o cd para o diretório que contém todos os subdiretórios dos arquivos .flac e fazer com que o comando passe por todos eles.

Agradecemos antecipadamente.

    
por boehj 27.03.2011 / 10:42

1 resposta

2

Crie um arquivo ~ / bin / flac2mp3 com o conteúdo:

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

Em seguida, execute find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;

Isso pode ser feito sem usar um arquivo separado para ~/bin/flac2mp3 , mas acho que usar um arquivo separado é mais simples e claro.

    
por Jordan Uggla 27.03.2011 / 11:26