Comment exclure des fichiers d'une archive zip

Le moyen le plus simple d'exclure de nombreux fichiers spécifiques ou un groupe de fichiers correspondants d'une archive zip est de sauter l'utilitaire easy zipping intégré à l'interface utilisateur conviviale de Mac OS X et de passer à la ligne de commande où réside la puissante commande zip.

Ceci est utile pour un million et une raisons, mais la motivation principale pour ce post concerne les fichiers .DS_Store qui sont regroupés avec les archives zip créées sur un Mac, seulement pour encombrer une autre machine qui décompresse le fichier, que ce soit sur un autre Mac, Windows PC ou Linux. Cela se produit à la fois avec l'outil zip convivial et l'utilitaire de ligne de commande par défaut, et c'est parce que le comportement par défaut des outils de compression est d'inclure les fichiers cachés, qu'ils soient affichés ou non. Ce n'est pas nécessairement une mauvaise chose et, dans de nombreux cas, cela serait considéré comme utile, mais si vous ne voulez pas d'eux, ou de tout autre dossier d'ailleurs, apparaissant dans vos archives, alors lisez la suite.

Exclusion de fichiers d'une archive zip

Les bases de l'exclusion de fichier lors de la création d'une archive zip sont centrées autour de l'indicateur -x, qui est utilisé pour exclure les fichiers de l'archive qui correspondent à un nom ou un modèle spécifique. À la base, cela ressemblera à ceci:

zip archive.zip files -x "ExcludeMe"

Ce qui signifie que vous pourriez exclure un seul fichier, dites qu'il s'appelle "Nothanks.jpg"

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

Voyons quelques exemples spécifiques où cela est utile.

Exclure les fichiers .DS_Store des archives ZIP

Cela empêchera les fichiers .DS_Store de métadonnées Mac, généralement invisibles, d'être inclus dans une archive zip, qui sont regroupés par défaut:

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

Cependant, si le répertoire inclut des sous-répertoires, vous devrez utiliser une autre variante de cette commande pour exclure les fichiers ds_store des sous-répertoires:

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

Note: tous les shells ne nécessitent pas de guillemets pour que cette commande fonctionne correctement, mais dans le shell bash (la valeur par défaut pour OS X), vous devrez utiliser les guillemets pour les exclure avec des jokers et des patterns.

Exclure des types de fichiers spécifiques d'une archive zip

Avec les caractères génériques, vous pouvez également exclure tous les fichiers d'un certain type en mettant l'accent sur l'extension. Par exemple, cette commande va compresser un répertoire entier, sans les fichiers .jpg:

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

Cela pourrait être modifié pour toute extension de fichier spécifique ou motif correspondant dans un nom de fichier.

Exclure le répertoire .git ou .svn d'une archive zip

Zip un répertoire, moins .git et son contenu:
zip -r zipdir.zip directorytozip -x "*.git*"

Compresser un dossier sans inclure le répertoire .svn:
zip -r zipped.zip directory -x "*.svn*"

Exclure tous les fichiers cachés d'une archive zip

Comme les motifs et les caractères génériques peuvent être utilisés, vous pouvez également exclure tout ou partie des fichiers et dossiers invisibles en ajoutant un point, qu'il s'agisse d'un répertoire comme .svn ou d'un fichier individuel comme .bash_profile ou .htaccess.

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

Ou pour exclure tous les fichiers invisibles de tous les sous-répertoires:

zip -r archive.zip directory -x "*/\.*"

Bravo à un intervenant sur les forums Macworld pour la syntaxe précise sur l'exclusion de ces fichiers de sous-répertoires ainsi.

En fin de compte, c'est juste une autre raison pour les utilisateurs de pouvoir passer au Terminal pour créer des archives. Avec des fonctionnalités puissantes comme le support des caractères génériques, l'exclusion et la protection optionnelle des fermetures à glissière, il est tout simplement plus complet, et puisque tout est inclus sur Mac, vous n'aurez pas besoin de télécharger une autre application pour supporter les fonctionnalités avancées.

Et oui, techniquement si vous étiez déterminé à rester dans l'interface utilisateur, vous pouvez utiliser les opérateurs de recherche Finder et Spotlight pour affiner le contenu d'un dossier dans OS X avant de créer une archive ou simplement Sélectionner tout et manuellement. mais ce n'est vraiment pas efficace pour les grandes opérations d'archivage. Ainsi, le terminal gagne pour la facilité, et bien qu'il soit centré sur la ligne de commande, ce n'est vraiment pas compliqué une fois que vous avez appris les bases.