Les bases de l'exclusion de fichier lors de la création d'une archive zip sont centrées autour de l' -x
indicateur, utilisé pour exclure les fichiers de l'archive qui correspondent à un nom ou à un modèle spécifique. Au plus basique, cela ressemblera à ceci:
zip archive.zip files -x "ExcludeMe"
Cela signifie que vous pouvez exclure un seul fichier, disons qu'il s'appelle «Nothanks.jpg».
zip archive.zip images/ -x "Nothanks.jpg"
Couvrons quelques exemples spécifiques où cela est utile.
Exclure les fichiers .DS_Store des archives Zip
Cela empêchera les .DS_Store
fichiers 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 comprend des sous-répertoires, vous voudrez 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"
Remarque: tous les shells n'ont pas besoin des guillemets pour que cette commande fonctionne correctement, mais dans le shell bash (par défaut pour OS X), vous devrez utiliser les guillemets pour les exclure avec des caractères génériques et des modèles.
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 vous concentrant sur l’extension. Par exemple, cette commande compressera un répertoire entier, moins les .jpg
fichiers:
zip -r archive.zip directory -x "*.jpg"
Cela pourrait être modifié pour toute extension de fichier ou motif spécifique correspondant à 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*"
Zip un dossier, sans inclure le .svn
répertoire:
zip -r zipped.zip directory -x "*.svn*"
Exclure tous les fichiers cachés d'une archive Zip
Étant donné que des modèles et des caractères génériques peuvent être utilisés, vous pouvez également exclure tout ou partie des fichiers et dossiers invisibles créés en préfixant un point, qu'il s'agisse d'un répertoire similaire .svn
ou d'un fichier individuel similaire à .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 "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
) est plus longue que prévu, mais cela fonctionne bien. Les sous-répertoires sont également inclus, donc +1 et une réponse acceptée :-)