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
Saftig
quelle

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 :)

Romeo Ninov
quelle
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.

AB
quelle
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.

L. Austin
quelle
0

Das funktioniert bei mir:

7z a zipped.zip ./rootDir/*

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

Marinos An
quelle