Beim Versuch, eine Datei in einem Unterverzeichnis zu entpacken, wird ein Fehler angezeigt: Achtung: Dateiname stimmt nicht überein

679
Carmageddon

Ich habe also ein Skript, das über zip-Dateien iteriert, ihren Inhalt mit unzip -l $ dateiname auflistet und nach Übereinstimmungen mit pattern sucht (.*)report.xml, in diesem Fall ergibt sich test0\report.xml

Aber wenn es versucht, mit zu entpacken unzip -j $filename, bekomme ich escaution: filename not matched: test0\report.xml

Ich stoppte und probierte manuell eine Datei aus, die Folgendes aufführt:

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 Fehler caution: filename not matched: test0report.xml

Ich habe versucht, mit \\zu rufen, um zu entkommen, dann den gleichen Fehler, test0\report.xmlstattdessen zu sagen .

Ich habe alles wie \, oder / oder // versucht, damit ich nicht glaube, dass es sich hierbei um einen umgekehrten Schrägstrich handelt.

Bitte helfen

0
Randbemerkung: Ist `unzip -j $ filename` nur ein Beispiel? Wenn es ein Teil Ihres Skripts ist, machen Sie es `unzip -j" $ filename "`. Kamil Maciorowski vor 5 Jahren 0
OK warum? es funktionierte für alle anderen Dateien, die ich bisher aus anderen Archiven extrahieren musste (sie befanden sich nicht in einem Unterverzeichnis mit falschem Schrägstrich, howeveR) Carmageddon vor 5 Jahren 0
Wenn die Variable Leerzeichen usw. enthält, erhält der Befehl mehr Argumente als erwartet und sie sind nicht vernünftig. Wenn Sie sicher sind, dass Leerzeichen nicht passieren können, können Sie die Shell-Variable ohne Anführungszeichen verwenden. Dennoch ist es eine gute allgemeine Praxis zu zitieren. Kamil Maciorowski vor 5 Jahren 1

1 Antwort auf die Frage

0
Kamil Maciorowski

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

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

unzipzurückgegeben, filename not matched: test0\report.xmlobwohl die Saite passen sollte, denke ich.

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

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

Ein Käfer? Ich denke, Sie müssen Ihrem Skript etwas Logik hinzufügen oder einfach von Hand entpacken, wenn eine solche (hoffentlich seltene) Situation erneut auftritt. Oder nutzen Sie diese Platzhalter, die von Script unterstützt werden, unzipund (.*)report.xmllassen unzipSie den Job erledigen:

unzip -j foo.zip '*report.xml' 
Interessante Beobachtung! Nicht korrekt. Ich habe jedoch gerade die zip-Datei zum Testen auf meine Windows-Maschine heruntergeladen. Das test0 ist ein Verzeichnis, das die Datei report.xml enthält. Ihre Arbeit funktioniert jedoch! Ich bekomme die Warnung: 2747693b-7027-44d3-98f4-a01f1ed139cf.zip scheint Backslashes als Pfadtrennzeichen zu verwenden Carmageddon vor 5 Jahren 0
Jetzt habe ich ein anderes Problem ... In meinem Skript wurde unzip -j $ i $ Dateiname verwendet. Jetzt muss ich einen Weg finden, ein Fragezeichen anstelle von `` `` `` `zu setzen Carmageddon vor 5 Jahren 0
Ich denke, ich werde $ dateiname durch `* .report.xml`` ersetzen ... Danke! Carmageddon vor 5 Jahren 0
Wo reichen wir einen Fehlerbericht für das Entpacken ein? obwohl es einige Jahre dauern wird, bis die Unternehmensdistros es bekommen :) Carmageddon vor 5 Jahren 0
@ Carmageddon Fehlerbericht? Ehrlich gesagt weiß ich es nicht. Hinweis: [ähnliche Situation bei "unrar"] (https://superuser.com/q/544786/432690). Kamil Maciorowski vor 5 Jahren 0
Ok, das funktioniert nicht in meinem Skript :( Wenn ich 'unzip -j $ i' * report.xml '# $ dateiname' mache) - Ich erhalte die Fehlermeldung: Achtung: Dateiname stimmt nicht überein: * report.xml # test0 \ report.xml `$ i ist der zip-Dateiname, der gerade geloopt wird Carmageddon vor 5 Jahren 0
@ Carmageddon Ich weiß nicht, was Sie mit diesem Code versuchen. Ich bezog mich auf "script […] sucht nach Übereinstimmungen mit dem Muster (. *) Report.xml" und riet Ihnen, entpacken zu lassen, um alle Übereinstimmungen zu behandeln - wie `unzip -j" $ i "* *. xml ". Kamil Maciorowski vor 5 Jahren 0
Egal, es hat funktioniert :) Ich glaube, ich musste $ i in ein Zitat einwickeln, so wie du es hier gezeigt hast ... es beschwert sich immer noch und warnt, aber es hat die Dateien aufgebläht. Vielen Dank! Carmageddon vor 5 Jahren 0