Beim Versuch, eine Datei im Unterverzeichnis zu entpacken, tritt die Fehlermeldung „Achtung: Dateiname stimmt nicht überein“ auf.

Beim Versuch, eine Datei im Unterverzeichnis zu entpacken, tritt die Fehlermeldung „Achtung: Dateiname stimmt nicht überein“ auf.

Ich habe also ein Skript, das über Zip-Dateien iteriert, deren Inhalt mit unzip -l $filename auflistet und nach Übereinstimmungen mit pattern sucht. (.*)report.xmlIn diesem Fall ergibt das test0\report.xml

Aber wenn ich versuche, es mit zu entpacken unzip -j $filename, erhalte ichcaution: filename not matched: test0\report.xml

Ich habe angehalten und es manuell mit einer Datei versucht, die Folgendes auflistet:

7285 2018-05-04 13:34 test0\report.xml

Dann tun

unzip -j 2747693b-7027-44d3-98f4-a01f1ed139cf.zip test0\report.xml

Gibt mir den Fehlercaution: filename not matched: test0report.xml

Ich habe versucht, mit aufzurufen, \\um es zu umgehen, dann derselbe Fehler, aber mit der Meldung test0\report.xmlstattdessen.

Ich habe alles versucht, z. B. \, oder /, oder //, daher glaube ich nicht, dass es sich hier um ein Problem mit dem Backward Slash-Escape handelt.

Bitte helfen Sie.

Antwort1

Ich habe das Problem in meinem Kubuntu nachgestellt. Der Dateiname war wörtlich test0\report.xmlund als ich das tat

unzip -j foo.zip test0\\report.xml

unzipzurückgegeben filename not matched: test0\report.xml, obwohl die erhaltene Zeichenfolge meiner Meinung nach übereinstimmen sollte.

Das Tool unterstützt einige Platzhalter. Ich konnte die Datei mit diesem Befehl entpacken:

unzip -j foo.zip 'test0?report.xml'

Ein Fehler? Ich schätze, Sie müssen Ihrem Skript eine Logik hinzufügen oder es einfach manuell entpacken, wenn eine solche (hoffentlich seltene) Situation erneut auftritt. Oder nutzen Sie diese von unterstützten Platzhalter unzipund lassen Sie sie die Arbeit erledigen, anstatt sie (.*)report.xmlim Skript abzugleichen unzip:

unzip -j foo.zip '*report.xml'

verwandte Informationen