
Entonces tengo una secuencia de comandos que itera sobre archivos zip, enumera su contenido con unzip -l $filename y busca coincidencias con el patrón (.*)report.xml
, en este caso produce test0\report.xml
Pero cuando intenta descomprimir usando unzip -j $filename
, aparececaution: filename not matched: test0\report.xml
Me detuve y probé manualmente en un archivo que enumera:
7285 2018-05-04 13:34 test0\report.xml
Entonces haciendo
unzip -j 2747693b-7027-44d3-98f4-a01f1ed139cf.zip test0\report.xml
me da el errorcaution: filename not matched: test0report.xml
Intenté llamar con \\
para escapar, luego el mismo error pero dije test0\report.xml
en su lugar.
Intenté todo como \, o /, o //, así que no creo que se trate de un problema de escape de barra invertida.
Por favor ayuda.
Respuesta1
He recreado el problema en mi Kubuntu. El nombre del archivo era literalmente test0\report.xml
y cuando lo hice
unzip -j foo.zip test0\\report.xml
unzip
devuelto filename not matched: test0\report.xml
aunque creo que la cadena que obtuvo debería coincidir.
La herramienta admite algunos comodines. Pude descomprimir el archivo con este comando:
unzip -j foo.zip 'test0?report.xml'
¿Un insecto? Supongo que tienes que agregar algo de lógica a tu script o simplemente descomprimirlo a mano cada vez que esta (con suerte, rara) situación vuelva a ocurrir. O aproveche estos comodines admitidos por unzip
y en lugar de coincidir (.*)report.xml
en el script, dejemos unzip
hacer el trabajo:
unzip -j foo.zip '*report.xml'