Die Grundlagen zum Ausschließen von Dateien beim Erstellen eines ZIP-Archivs werden um das -xFlag zentriert , 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 ausschließen, beispielsweise "Nothanks.jpg".
zip archive.zip images/ -x "Nothanks.jpg"
Lassen Sie uns einige spezifische Beispiele behandeln, bei denen dies nützlich ist.
Schließen Sie .DS_Store-Dateien aus Zip-Archiven aus
Auf diese Weise wird verhindert, dass die normalerweise unsichtbaren Mac-Metadatendateien .DS_Store
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, sollten 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.
Ausschließen bestimmter Dateitypen aus einem Zip-Archiv
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 .jpgDateien 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.
Schließen Sie das .git- oder .svn-Verzeichnis aus einem Zip-Archiv aus
Zip ein Verzeichnis, minus .gitund seinen Inhalt:
zip -r zipdir.zip directorytozip -x "*.git*"
Komprimieren Sie einen Ordner, ohne das .svnVerzeichnis 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 eine oder alle unsichtbaren Dateien und Ordner ausschließen , die so gemacht werden , indem sie mit einer Periode voran wird, ob es ein Verzeichnis ist wie .svnoder eine einzelne Datei wie .bash_profileoder .htaccess.
zip -r archivename.zip directorytozip -x "*.*"
Oder um alle unsichtbaren Dateien aus allen Unterverzeichnissen auszuschließen:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@) ist länger als erwartet, funktioniert aber einwandfrei. Unterverzeichnisse sind ebenfalls enthalten, also +1 und eine akzeptierte Antwort :-)