Lame compactar arquivos mp3 recursivamente

4

Eu quero compactar toda a minha coleção de músicas (uma cópia dela, na verdade) usando o coxo. Então, naturalmente, existem pastas dentro de pastas e possíveis caracteres estranhos em nomes de arquivos. Eu também usei o soundconverter gráfico, mas não gostei porque tem taxas de bits predefinidas.

O que eu tentei até agora:

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

e

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

e

$ lame -b 160 < list

Tudo isso me causa um erro de uso. Qual é o caminho certo para fazer isso? Além disso, se houver uma maneira de substituir o arquivo original , ficarei muito feliz.

    
por dotslash 19.04.2015 / 11:45

2 respostas

6

lame não pode ler em nomes de arquivos da entrada. Você terá que usar find ' -exec ou xargs para executá-lo em cada arquivo encontrado:

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

Se um segundo nome de arquivo não for especificado, lame anexará outro .mp3 ao nome do arquivo fornecido e gravará nesse arquivo. lame não suporta a gravação no mesmo arquivo. Você terá que converter para outro arquivo e copiá-lo sobre o arquivo original:

find . -iname '*.mp3' -exec sh -c 'lame -b 160 "$0" "$0"-160 && mv "$0"-160 "$0"' {} \;
    
por muru 19.04.2015 / 15:51
2

Tente o seguinte:

Comece removendo os espaços em branco dos nomes dos arquivos, pois isso parece causar problemas:

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

Execute um loop e percorra todos os arquivos:

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

Agora você substituirá os arquivos originais por aqueles criados pelo coxo.

    
por Niklas Lindskog 19.04.2015 / 12:16

Tags