que tienen una variable fiesta llena con un nombre de archivo y la ruta:¿Es posible aplicar dos transformaciones de patrón coincidentes en una operación?
SONG="~/Music/Mine/Cool Title Bro.flac"
En mis intentos de hacer el etiquetado drásticamente más fácil, he aplicado un poco de transformación de la variable para aislar el título:
echo "${SONG#\~/Music/Mine/}" # which prints: Cool Title Bro.flac
Sé que también es posible eliminar el sufijo con ${SONG%%.flac}
.
¿Pero es posible eliminar tanto el prefijo como el sufijo en una sola operación?
Este:
${SONG#\~/Music/Mine/%%.flac}
no funciona presumiblemente debido a que intenta hacer coincidir un literal %%.flac
como parte del prefijo. La inversa no funciona (%%.flac#~/[...]
), e incluso me he vuelto loco y trató
${${SONG#~/Music/Mine/}%%.flac}
que también no funciona.
Esto puede ser un excelente ejemplo de sobre-ingeniería de mi parte, pero sería excelente si hay una manera de hacerlo y aún no lo he descubierto.
He echado un vistazo muy rápido a http://tldp.org/LDP/abs/html/parameter-substitution.html y creo que es posible que deba hacer esto en dos pasos separados utilizando los operadores de sustitución variable de bash. También tenga en cuenta que tuve que escapar de las barras diagonales en echo "$ {SONG # \ ~/Music \/Mine \ /" para que funcionase el reemplazo de la interfaz. Usé GNU bash, versión 4.1.10 (4) -lanzamiento (i686-pc-cygwin) –
@RobKielty: solo tuve que escapar de la tilde. Tenga en cuenta que no está escapando del primer corte. –
@DennisWilliamson Está en lo correcto, luego de una inspección adicional solo tuve que escapar del ~ –