regex para remover os últimos quatro caracteres

0

Existe uma maneira que eu poderia eliminar os últimos quatro caracteres com regex no script de linha abaixo como eu converter arquivos .wav em arquivos. A partir de agora, meu script de linha única produz arquivos que terminam em .wav.mp3

for i in *.wav; do avconv -i "$i" "$i".mp3;done 

Produz a saída abaixo

    Sanctify, Separate, & Success Success.wav.mp3
    There four types of love.wav.mp3
    Theres too much love to let you fail.wav.mp3
    
por phillipsk 15.02.2016 / 00:25

1 resposta

4

Você não quer um regex, você quer usar a expansão de parâmetro do Bash para remover a extensão do arquivo em trânsito:

for i in *.wav; do avconv -i "$i" "${i%.*}".mp3; done

Aqui, "${i%.*}" é expandido como o padrão no final do parâmetro , conforme definido por tudo ( * ) após o . excluir a correspondência mais curta, ou seja, .wav .

Você também pode fazer uma substituição literal com "${i/.wav/.mp3}" .

    
por 15.02.2016 / 00:39