it-swarm.com.de

Wie kann ich über ein Terminal ein Zip-Archiv eines ganzen Verzeichnisses ohne versteckte Dateien erstellen?

Ich habe ein Projekt mit vielen versteckten Ordnern/Dateien. Ich möchte ein Zip-Archiv davon erstellen, aber im Archiv sollten sich keine versteckten Ordner/Dateien befinden. Wenn Dateien in einem versteckten Ordner nicht versteckt sind, sollten sie auch nicht enthalten sein.

Ich weiß, dass ich ein Zip-Archiv eines Verzeichnisses wie dieses erstellen kann:

Zip -r zipfile.Zip directory

Ich weiß auch, dass ich Dateien mit der Option -x ausschließen kann, daher dachte ich, dass dies funktionieren könnte:

Zip -r zipfile.Zip directory -x .*

Es hat nicht funktioniert. Alle versteckten Verzeichnisse befanden sich noch in der Zip-Datei.

217
Martin Thoma

Dies schließt auch versteckte Dateien in nicht versteckten Verzeichnissen aus:

find /full_path -path '*/.*' -Prune -o -type f -print | Zip ~/file.Zip [email protected]
107
arrange

Wenn Sie Zip noch nicht installiert haben, installieren Sie es zuerst wie folgt:

Sudo apt-get install Zip

Dann zum einfachen Erstellen einer Zip-Datei:

Zip -r compressed_filename.Zip foldername

Wenn Sie versteckte Dateien ausschließen möchten:

find /folder_path -path '*/.*' -Prune -o -type f -print | Zip ~/compressed_filename.Zip [email protected]

Ausschließen von Dateien aus einem Zip-Archiv (entnommen aus http://osxdaily.com/2013/04/30/how-to-exclude -Dateien-aus-einem-Zip-Archiv / )

Die Grundlagen zum Ausschließen von Dateien beim Erstellen eines Zip-Archivs basieren auf dem Flag -x, mit dem Dateien aus dem Archiv ausgeschlossen werden, die einem bestimmten Namen oder Muster entsprechen. Im einfachsten Fall sieht es so aus:

Zip archive.Zip files -x "ExcludeMe"

Das heißt, Sie können eine einzelne Datei mit dem Namen "Nothanks.jpg" ausschließen.

Zip archive.Zip images/ -x "Nothanks.jpg"

Lassen Sie uns einige spezifische Beispiele behandeln, bei denen dies nützlich ist.

.DS_Store-Dateien aus Zip-Archiven ausschließen

Dadurch wird verhindert, dass die normalerweise unsichtbaren Mac-Metadaten .DS_Store -Dateien in ein Zip-Archiv aufgenommen werden, das standardmäßig im Paket enthalten ist:

Zip -r archivename.Zip archivedirectory -x "*.DS_Store"

Wenn das Verzeichnis jedoch Unterverzeichnisse enthält, möchten Sie eine andere Variante dieses Befehls verwenden, um die ds_store-Dateien auch aus den Unterverzeichnissen auszuschließen:

Zip -r archive.Zip directory -x "*/\.DS_Store"

Hinweis: Nicht für alle Shells sind Anführungszeichen erforderlich, damit dieser Befehl ordnungsgemäß ausgeführt werden kann. In der Bash-Shell (der Standardeinstellung für OS X) müssen Sie jedoch die Anführungszeichen zum Ausschließen mit Platzhaltern und Mustern verwenden.

Bestimmte Dateitypen aus einem Zip-Archiv ausschließen

Mit Platzhaltern können Sie auch alle Dateien eines bestimmten Typs ausschließen, indem Sie sich auf die Erweiterung konzentrieren. Mit diesem Befehl wird beispielsweise ein ganzes Verzeichnis ohne .jpg -Dateien komprimiert:

Zip -r archive.Zip directory -x "*.jpg"

Dies kann für eine bestimmte Dateierweiterung oder ein bestimmtes Muster geändert werden, das einem Dateinamen entspricht.

.git- oder .svn-Verzeichnis aus einem Zip-Archiv ausschließen

Komprimieren Sie ein Verzeichnis ohne .git und dessen Inhalt:

Zip -r zipdir.Zip directorytozip -x "*.git*"

Komprimieren Sie einen Ordner, ohne das Verzeichnis .svn einzuschließen:

Zip -r zipped.Zip directory -x "*.svn*"

Alle versteckten Dateien aus einem Zip-Archiv ausschließen

Da Muster und Platzhalter verwendet werden können, können Sie auch einige oder alle unsichtbaren Dateien und Ordner ausschließen, denen ein Punkt vorangestellt ist, unabhängig davon, ob es sich um ein Verzeichnis wie .svn oder um eine einzelne Datei wie .bash_profile handelt. oder .htaccess.

Zip -r archivename.Zip directorytozip -x "*.*"

Oder um alle unsichtbaren Dateien aus allen Unterverzeichnissen auszuschließen:

Zip -r archive.Zip directory -x "*/\.*"
102
M.A.K. Ripon

Fügen Sie " zum .* hinzu (andernfalls erweitert Ihre Shell .* zu den Punktdateien im aktuellen Verzeichnis) und schließen Sie auch versteckte Dateien in Unterverzeichnissen aus:

Zip -r zipfile.Zip . -x ".*" -x "*/.*"

Dies führt dazu, dass Dateien, die mit einem . beginnen, nicht zu Ihrer Zip-Datei hinzugefügt werden.

[email protected]:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
[email protected]:~/tmp$ Zip -r zipfile.Zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
[email protected]:~/tmp$ Zip -r zipfile.Zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)
54
Rinzwind

Dieser beinhaltet alle "." Verzeichnisse, Unterverzeichnisse und "." Dateien oder Verzeichnisse in Verzeichnissen ... Im Wesentlichen die erste Antwort, enthält aber die oberste Ebene "." Dateien.

find /full_path -path '*.*/.*' -Prune -o -type f -print | Zip ~/file.Zip [email protected]
8
cosimnot

Beispiel für das Ausschließen aller Ordner, die mit beginnen. :

tar cvpzf folder.tgz folder/ --exclude '.*'

Besser komprimieren, aber langsamer:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
8
Tigrouzen

Die richtige Methode wäre:

Zip -r zipfile.Zip directory -x directory/.*
5
Rômulo Neves

Beim Zippen von Verzeichnissen mit Ausnahme einiger Dateierweiterungen:

$ cd /path/to/dir
$ Zip -r dir.Zip . -x "*.log" -x "*.cache"
4
K-Gun

Ohne versteckte Ordner und Dateien im Verzeichnis:

Zip -r zipfile.Zip directory/*

verzeichnis: |── .git │   ├── src │   └── Work.file ├── .test │   └── .file └── test.file

$ Zip -r zipfile.Zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)
3
Umanshield