Ich rufe den zip-Befehl von einem Skript aus auf, in dem ich das Verzeichnis nicht ändern kann. Ich muss data/kit123/
aus dem Verzeichnis, in dem sich die Daten befinden , eine Zip-Datei des Materials erstellen , aber ich möchte, dass der Inhalt der Zip-Datei nur der Inhalt von ist kit123
, mit Pfaden relativ zu kit123
.
Dies ist die Verzeichnisstruktur
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Mein Skript wird in myworkingdir ausgeführt und kann keine Verzeichnisse ändern.
Wenn ich anrufe
zip -r kit123.zip data/kit123
dann wird die Struktur in der zip-Datei sein
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
aber ich möchte, dass es so ist
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Gibt es eine Zip-Option, die ich verwenden kann, um dies zu erreichen? Es scheint seltsam, dass es von meinem Arbeitsverzeichnis abhängen sollte
Ich weiß, dass es nicht -j ist. dass man die Struktur in kit123 zerstört
command-line
zip
Nathan
quelle
quelle
zipfile.write(arcname=
erlaubt es übrigens: docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.writeAntworten:
Wie Sie in den Kommentaren notieren, wissen Sie jetzt, wie Sie das Verzeichnis mit Ihrem Skript ändern, und ich erkläre die Situation mit zip in Bezug auf relative Pfade.
Es ist wahrscheinlich am einfachsten, das Terminal zu öffnen und
cd
zukit123
; Sie müssen das Zielverzeichnis zu Ihrem Arbeitsverzeichnis machen. Sie können den Befehl nicht von der Basis Ihres Basisverzeichnisses ausführen, da er sonst alle Pfade von aufnimmt./home/$USER/..
Wenn Sie die-j
Option verwenden, werden alle Pfade entfernt, wie es keine gibt 't wirklich ein Äquivalent der tar-Option,--strip
mit der verschiedene Ebenen der Pfadentfernung angegeben werden können.Also cd bitte in dein Zielverzeichnis (
kit123
) und gib ein:Dadurch werden rekursiv (
-r
) alle (*
) Dateien und Dateiverzeichnisse im aktuellen Verzeichnis (kit123
)-p
beibehalten , und da relative Pfade ( ) automatisch beibehalten werden, sofern die-j
Option nicht vorhanden ist, wird die Verzeichnisstruktur wie gewünscht beibehalten .Kit123
und Unterordner (kitpart1
) mit ihren eigenen Dateien werden vorhanden sein:Sie können den Inhalt der ZIP-Datei mit überprüfen
unzip -l zipfile.zip
.Weitere Informationen zu den anderen verfügbaren Optionen
zip
finden Sie unterman zip
und in der Ubuntu-Manpage online .quelle