Die Grundlagen zum Ausschließen von Dateien beim Erstellen eines ZIP-Archivs werden um das -x
Flag 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 .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.
Schließen Sie das .git- oder .svn-Verzeichnis aus einem Zip-Archiv aus
Zip ein Verzeichnis, minus .git
und seinen Inhalt:
zip -r zipdir.zip directorytozip -x "*.git*"
Komprimieren Sie einen Ordner, ohne das .svn
Verzeichnis 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 .svn
oder eine einzelne Datei wie .bash_profile
oder .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 :-)