Hallo Ich habe eine Datei entpacken, die ein Verzeichnis haben könnte, und ich möchte alles in diesem Verzeichnis ausschließen, habe ich viele Optionen ausprobiert und sah auch hier, aber nicht scheint um eine gute Lösung zu finden.linux unzip ausschließen alles im Ordner und darunter
Dies sind der Inhalt der Zip-Datei: Bitte beachten Sie, um die Tiefe der EXCLUDE Ordner nicht bekannt ist, aber wir müssen alles
$unzip -l patch2.zip
Archive: patch2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2013-10-29 17:42 EXCLUDE/
0 2013-10-29 17:24 EXCLUDE/inner/
0 2013-10-29 17:24 EXCLUDE/inner/inner1.txt
0 2013-10-29 15:45 EXCLUDE/file.txt
0 2013-10-29 15:44 patch.jar
0 2013-10-29 15:44 system.properties
--------- -------
0 6 files
ich diesen Befehl ausschließen versuchte, die nur die Dateien darin extrahieren, aber nicht der Ordner und sein Inhalt:
$unzip -l patch2.zip -x EXCLUDE/*
Archive: patch2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2013-10-29 17:42 EXCLUDE/
0 2013-10-29 17:24 EXCLUDE/inner/
0 2013-10-29 17:24 EXCLUDE/inner/inner1.txt
0 2013-10-29 15:44 patch.jar
0 2013-10-29 15:44 system.properties
--------- -------
0 5 files
Danke für die Hilfe.
+1 für die Antwort, da es in der Nähe der Frage des OP ist. Mein eigenes ist nur eine "gut zu wissen" Alternative ^^ (die jetzt wenig bekannt ist, während es in den frühen linux Tagen ziemlich berühmter war) –
Danke das funktionierte tadellos. Kannst du bitte erklären was meinst du mit "es wird zum entpacken weitergegeben. Ansonsten wird es von der Shell erweitert bevor es zum entpacken übergeben wird". – Ravi
@Ravi Lesen Sie über [Globbing] (http://tldp.org/LDP/abs/html/globbingref.html), wenn die Shell Platzhaltermuster in Dateinamen konvertiert. Wenn Sie zum Beispiel "echo *" ausführen, "expandiert" die Shell "*" in eine Liste von Dateinamen, z. 'file1',' file2' etc. vor der Ausführung von 'echo'. Als Ergebnis wird echo * 'zu echo file1 file2. Das 'echo' Programm sieht niemals den Platzhalter, es sieht nur die Argumente' Datei1' und 'Datei2'. Wenn Sie jedoch das Muster "echo" * "" zitieren, führt die Shell diese Erweiterung nicht aus und das Muster wird als Argument an das Programm übergeben, das es beliebig interpretieren kann. – dogbane