regex para remover os últimos quatro caracteres

regex para remover os últimos quatro caracteres

Existe uma maneira de eliminar os últimos quatro caracteres com regex no script de uma linha abaixo enquanto converto arquivos .wav em arquivos .mp3. 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

Responder1

Você não quer um regex, você quer usar o Bashexpansão de parâmetrospara 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 emo final do parâmetro, conforme definido por tudo ( *) após a .exclusão da correspondência mais curta, ou seja, .wav.

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

informação relacionada