L' ziputilitaire de ligne de commande ne crée jamais de __MACOSXrépertoire, vous pouvez donc simplement exécuter une commande comme celle-ci:
zip directory.zip -x \*.DS_Store -r directory
Dans la sortie ci-dessous, a.zipque j'ai créée avec l' ziputilitaire de ligne de commande ne contient pas de __MACOSXrépertoire, mais a 2.zipque j'ai créé à partir du Finder.
$ touch a
$ xattr -w somekey somevalue a
$ zip a.zip a
adding: a (stored 0%)
$ unzip -l a.zip
Archive: a.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
-------- -------
0 1 file
$ unzip -l a\ 2.zip # I created `a 2.zip` from Finder before this
Archive: a 2.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
0 01-02-16 20:31 __MACOSX/
149 01-02-16 20:29 __MACOSX/._a
-------- -------
149 3 files
-x .DS_Storen'exclut pas les .DS_Storefichiers à l'intérieur des répertoires mais le -x \*.DS_Storefait.
Le fichier de niveau supérieur d'une archive zip avec plusieurs fichiers doit généralement être un répertoire unique, car si ce n'est pas le cas, certains utilitaires de désarchivage (comme unzipet 7z, mais pas Archive Utility, The Unarchiver unar, ou dtrx) ne créent pas de répertoire contenant pour le fichiers lorsque l'archive est extraite, ce qui rend souvent les fichiers difficiles à trouver, et si plusieurs archives comme celle-ci sont extraites en même temps, il peut être difficile de dire quels fichiers appartiennent à quelle archive.
L'utilitaire d'archivage crée uniquement un __MACOSXrépertoire lorsque vous créez une archive dans laquelle au moins un fichier contient des métadonnées telles que des attributs étendus, des indicateurs de fichier ou une fourchette de ressources. Le __MACOSXrépertoire contient des fichiers AppleDouble dont le nom de fichier commence par ._qui sont utilisés pour stocker les métadonnées spécifiques à OS X. L' ziputilitaire de ligne de commande rejette les métadonnées telles que les attributs étendus, les indicateurs de fichier et les fourchettes de ressources, ce qui signifie également que les métadonnées telles que les balises sont perdues et que les alias cessent de fonctionner, car les informations d'un fichier d'alias sont stockées dans une fourchette de ressources.
Normalement, vous pouvez simplement supprimer les métadonnées spécifiques à OS X, mais pour voir ce que les fichiers de métadonnées contiennent, vous pouvez utiliser xattr -l. xattrinclut également les fourchettes de ressources et les indicateurs de fichier, car même s'ils ne sont pas réellement stockés en tant qu'attributs étendus, ils sont accessibles via l'interface d'attributs étendus. L'utilitaire d'archivage et l' ziputilitaire de ligne de commande suppriment les ACL.