Ich habe eine Datei mit dem Namen All CRGs.zip
und möchte ihren Inhalt in ein Verzeichnis mit dem Namen entpacken data
(das bereits existiert und in dem sich einige andere Dateien befinden).
Ist das möglich? Ich arbeite an OSX.
Ich habe es versucht:
$ unzip "All CRGs.zip" -d data/
Aber das entpackt alles, data/All CRGs
wonach ich nicht suche. Ich möchte, dass alles auf den Punkt kommt data
.
Ist das möglich?
Antworten:
Sie können entweder die gesamte Ordnerstruktur einschließlich des
All CRGs
Ordners neu erstellen oder alle Ordner in der ZIP-Datei mit der-j
Option -flag für den Befehl unzip löschen.Das Problem ist, dass die ZIP-Datei mit dem
All CRGs
-Ordner als Top-Level erstellt wurdezip "All CRGs.zip" "All CRGs"
. Der richtige Weg wäre gewesenzip "All CRGs.zip" "All CRGs/*"
, ein ZIP-Archiv aller Dateien und Ordner imAll CRGs
-Ordner ohne den umgebenden Ordner zu erstellen .Die einzige Möglichkeit, nur die Dateien unter Beibehaltung der Ordnerstruktur zu extrahieren, ist etwa folgende:
Es wird den kompletten Ordner entpacken und danach den Inhalt des Ordners um eine Ebene nach oben verschieben und den (jetzt leeren) "All CRGs" -Ordner endgültig entfernen.
quelle
All CRGs/*
aus den Anführungszeichen herausnehme, werden die Dateien der ZIP-Datei hinzugefügt, wobei jedoch das übergeordnete Verzeichnis vorhanden ist.mv
Befehl verschiebt die versteckten Dateien nicht. eine zusätzlichemv "data/All CRGs/.*" "data/"
ist erforderlich.Da Sie wissen, dass die ZIP-Datei einen unerwünschten Ordner der obersten Ebene enthält, und Sie den Namen dieses Ordners der obersten Ebene kennen, können Sie einen Symlink verwenden, um den gesamten Inhalt dieses Ordners wie folgt im übergeordneten Ordner anzuzeigen:
Der
ln
Schritt bewirkt, dass der Ordnerdata/All CRGs
erstellt wird, der mit dem aktuellen Verzeichnis (relativ zudata/
) verknüpft istdata/
. Wenn Sie dann Dateien aus extrahierenAll CRGs.zip
und derunzip
Befehl versucht, einedata/All CRGs/file.dat
Datei zu erstellen , wird diese Datei wie folgt erstelltdata/./file.dat
.Diese Technik kann ohne zip-Datei mit touch demonstriert werden:
Mit diesem Trick können Sie auch bestimmte Dateien oder Ordner in einen anderen Ordner extrahieren:
Dann erscheint alles in dem Archiv, in das extrahiert
subdir2
wird, in/tmp
.quelle