
Então, eu tenho um script que itera sobre arquivos zip, lista seu conteúdo com unzip -l $filename e procura correspondências com pattern (.*)report.xml
, neste caso produz test0\report.xml
Mas quando ele tenta descompactar usando unzip -j $filename
, recebocaution: filename not matched: test0\report.xml
Parei e tentei manualmente em um arquivo que lista:
7285 2018-05-04 13:34 test0\report.xml
Então fazendo
unzip -j 2747693b-7027-44d3-98f4-a01f1ed139cf.zip test0\report.xml
Me dá o errocaution: filename not matched: test0report.xml
Tentei ligar \\
para escapar, mas o mesmo erro, mas dizendo test0\report.xml
.
Eu tentei de tudo como \, ou /, ou // então não acho que isso seja um problema de escape de barra invertida.
Por favor ajude.
Responder1
Eu recriei o problema no meu Kubuntu. O nome do arquivo era literalmente test0\report.xml
e quando o fiz
unzip -j foo.zip test0\\report.xml
unzip
retornou filename not matched: test0\report.xml
embora a string obtida deva corresponder, eu acho.
A ferramenta oferece suporte a alguns curingas. Consegui descompactar o arquivo com este comando:
unzip -j foo.zip 'test0?report.xml'
Um inseto? Eu acho que você precisa adicionar alguma lógica ao seu script ou apenas descompactar manualmente sempre que tal situação (esperançosamente rara) ocorrer novamente. Ou aproveite esses curingas suportados por unzip
e, em vez de corresponder (.*)report.xml
no script, deixe unzip
o trabalho:
unzip -j foo.zip '*report.xml'