¿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}"
.