Tengo una lista de mp3archivos nombrados así:
$artist/$album ($year)/$tracknum $title.mp3
Muchas de estas pistas tienen etiquetas incorrectas o faltantes, que estoy corrigiendo mediante el uso de id3v2y regex porque los nombres de los archivos son correctos. Aquí hay un ejemplo de cómo estoy configurando títulos:
for mp3 in *.mp3; do id3v2 -t "$(echo $mp3 | cut -d. -f1 | cut -d\ -f2-)" "$mp3"; done
(Nota: las citas están ahí porque los títulos a menudo tienen espacios, lo que hace que bash se queje a menos que se usen espacios)
Mi pregunta es esta: ¿hay una mejor manera de extraer una subcadena específica de estos archivos? En el caso de los títulos, no puedo usar grep -osin que también coincidan $tracknumporque muchas pistas tienen números y espacios en los títulos (lo que significa que necesitaría "([0-9a-zA-Z ]+)"mi patrón, que coincide con el nombre de archivo completo antes del .mp3).
Estoy casi seguro de que hay una forma mucho mejor de hacer esto. ¿Esta ahí?

/) antes de pasarla a cortar, pero en general fue muy útil.