Script: Converte recursivamente arquivos wma para MP3, depois remove arquivos WMA

0

Estou tentando consertar um script que pesquisa recursivamente uma árvore de diretórios para arquivos WMA - convertendo-os em arquivos MP3 e removendo os arquivos WMA, deixando os arquivos MP3 convertidos em seu lugar. Com alguma ajuda e pesquisa, é aqui que estou:

   #!/bin/bash


shopt -s globstar


for f in **/*.[Ww][Mm][Aa]
do
    path=${f%/*}
    filename=${f##*/}
    new=${filename// /_}  # space -> underscore
    new=${new,,}             # lowercase
    mv -v -- "$f" "$path/$new"
done


for f in **/*.wma
do
    mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$f" && lame -m j -h --vbr-new -b 320 audiodump.wav -o "'basename "$f" .wma'.mp3"
    rm -f audiodump.wav
    rm -f "$f" "${f/%.wma}"
done 

Este script parece funcionar apenas em 14.04 (não em 15.10). Neste ponto, é capaz de percorrer subdiretórios, converter arquivos wma para MP3 e excluir os respectivos arquivos WMA. A questão é que os arquivos MP3 são criados no diretório MAIN e não nos diretórios dos respectivos arquivos WMA.

    
por Spency 17.12.2015 / 06:20

1 resposta

0

Em outro lugar, você está usando "$f" sem basename , para que o caminho para o arquivo seja fornecido. É somente no comando lame que você está usando basename . Com basename , os componentes do diretório serão perdidos. O arquivo de saída seria criado no diretório em que o comando foi executado.

Se você quiser substituir apenas uma extensão .wma por .mp3 , use "${f%.wma}.mp3" . Isso deve manter o caminho.

    
por muru 17.12.2015 / 07:20