expresiones regulares para eliminar los últimos cuatro caracteres

expresiones regulares para eliminar los últimos cuatro caracteres

¿Hay alguna manera de eliminar los últimos cuatro caracteres con expresiones regulares en el script de una línea a continuación mientras convierto archivos .wav en archivos .mp3? A partir de ahora mi script de una sola línea produce archivos que terminan en.wav.mp3

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

Produce el siguiente resultado

    Sanctify, Separate, & Success Success.wav.mp3
    There four types of love.wav.mp3
    Theres too much love to let you fail.wav.mp3

Respuesta1

No quieres una expresión regular, quieres usar Bashexpansión de parámetrospara eliminar la extensión del archivo en tránsito:

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

Aquí, "${i%.*}"se expande como el patrón enel final del parámetro, como lo define todo ( *) después de .eliminar la coincidencia más corta, es decir, .wav.

También puedes hacer una sustitución literal con "${i/.wav/.mp3}".

información relacionada