Gibt es eine Option für den Befehl linux zip, mit der ich das Zielverzeichnis, in das es entpackt wird, fest codieren kann? Zum Beispiel möchte ich ./mydir-Dateien in myzipfile.zip komprimieren, aber ich möchte, dass der Befehl unzip ein bestimmtes Verzeichnis "projx" erstellt und die Dateien, die sich unter ./mydir befinden, dahin erweitert.
zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )
Antworten:
Es gibt keine solche Option, zumindest nicht für Info-ZIP. Sie müssen ein Verzeichnis projx selbst erstellen , Ihre Dateien in dieses Verzeichnis verschieben / kopieren und es dann weitergeben
zip
.Wenn das Verzeichnis bereits vorhanden ist, übergeben Sie einfach die Option
-d
anunzip
, um das zu extrahierende Zielverzeichnis anzugeben.quelle
Dafür gibt es einen anderen Weg. Sie können den gesamten Inhalt der ZIP-Datei mit der folgenden Methode reduzieren. Zielverzeichnis ist " projx " und führen folgenden Befehl aus.
Die Option -j heißt "Junk-Pfade" und speichert jede Datei im aktuellen Verzeichnis, anstatt eine Verzeichnisstruktur zu extrahieren.
quelle
Ich kenne keine bestimmte Befehlszeilenoption, aber Sie können die folgenden Befehle verwenden, um Ihr Ziel zu erreichen:
Mit dem ersten Befehl wird eine symbolische Verknüpfung erstellt, über die Sie auch auf die Dateien in
mydir
zugreifen könnenprojx
. Bei Verwendung vonInfo-ZIP
(getestet mit Version 2.31) wird die symbolische Verknüpfung dereferenziert (dies ist die Standardeinstellung, sofern Sie nichts anderes angeben-y
) und die Dateien werden rekursiv gespeichert:Sie sehen, der Ordnername wird auch in der Datei gespeichert - also wird beim Extrahieren das Verzeichnis
projx
erstellt.Ich kann mir zwar keine Möglichkeit vorstellen, absolute Pfade zu speichern, aber das ist sowieso eine schlechte Idee.
quelle
-jj
. Auf anderen Betriebssystemen wird nur die Option-j
unterstützt (und-jj
als-j
solche interpretiert ), die alle führenden Pfade entfernt und somit zum Gegenteil führt (ein sehr cleveres Design ...).