Komprimieren Sie den Inhalt eines Ordners, ohne den Ordner selbst einzuschließen


77

Ich habe ein Verzeichnis mit dem Namen folder, das so aussieht:

folder
      -> root_folder
                    -> some files

Ich möchte dieses Verzeichnis komprimieren zipped_dirund habe versucht:

zip -r zipped_dir.zip folder/*

Dies erzeugt jedoch eine ZIP-Datei, die wie folgt aussieht:

zipped_dir
          -> folder
                   -> root_folder
                                 -> some files

Mit anderen Worten, es enthält das Verzeichnis, dessen Inhalt ich komprimieren möchte. Wie kann ich dieses übergeordnete Verzeichnis von der ZIP-Datei ausschließen, ohne etwas zu verschieben?

IE Ich möchte dieses Endergebnis:

zipped_dir
          -> root_folder
                        -> some files

Antworten:


75

Versuchen Sie, diesen Befehl zu verwenden (Sie werden auf die Idee kommen)

cd folder; zip -r ../zipped_dir.zip *

Vielleicht gibt es einen anderen Weg, aber das ist der schnellste und einfachste für mich :)


2
Das funktioniert perfekt mit diesem Trick. hinweis: es wird a chroot .
Loretoparisi

Äquivalent:zip -r zipped_dir.zip folder/*
Tobias Kolb

5
@TobiasKolb, vielleicht liest du die Frage nicht. OP möchte nicht, dass sich der Ordner im Zip- Ordner befindet .
Romeo Ninov

2
Scheint der einzige Weg zu sein
Robert

1
@PabloDiaz, in meinem Beispiel cd -wird die Arbeit erledigen (nur ein Befehl) :) Odercd ..
Romeo Ninov

30

Verwenden Sie -j; zum Beispiel:zip -r -j zipped_dir.zip folder/*

Der 'root_folder' wird nicht komprimiert.


7
Ich erhalte eine Fehlermeldung, wenn ich zwei Dateien mit demselben Namen habe.
Chris

11
In OP wird wahrscheinlich nur das übergeordnete Verzeichnis entfernt, nicht alle.
Tokland

Noch erstellt Verzeichnisse zip -r -j package.zip ./dist/static/*macht Archivstrukturdist/static/myfiels
deathangel908

4
Es reduziert auch die untergeordneten Verzeichnisdateien.
Sumit Ramteke

3
Mit dieser -jOption werden alle Verzeichnisinformationen entfernt und nur Dateien gespeichert. Das heißt, alle Dateien in einem Verzeichnis "flach" zu speichern.
Robert

5
zip -r -D zipped.zip *

-D Weist zip an, keine Verzeichnisse zu erstellen.


0

Das funktioniert bei mir:

7z a zipped.zip ./rootDir/*

Es wird ein zipArchiv mit root erstellt: alle darin enthaltenen Dateien / Verzeichnisse rootDir.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.