La ziputilidad de línea de comandos nunca crea un __MACOSXdirectorio, por lo que puede ejecutar un comando como este:
zip directory.zip -x \*.DS_Store -r directory
En el resultado a continuación, a.ziplo que creé con la ziputilidad de línea de comandos no contiene un __MACOSXdirectorio, pero sí a 2.ziplo creé desde 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_Storeno excluye .DS_Storearchivos dentro de directorios pero lo -x \*.DS_Storehace.
El archivo de nivel superior de un archivo zip con varios archivos generalmente debería ser un solo directorio, porque si no lo es, algunas utilidades de desarchivado (como unzipy 7z, pero no la Utilidad de archivo, The Unarchiver unar, o dtrx) no crean un directorio contenedor para archivos cuando se extrae el archivo, lo que a menudo hace que los archivos sean difíciles de encontrar, y si se extraen varios archivos como ese al mismo tiempo, puede ser difícil saber qué archivos pertenecen a qué archivo.
Archive Utility solo crea un __MACOSXdirectorio cuando crea un archivo en el que al menos un archivo contiene metadatos como atributos extendidos, marcas de archivo o una bifurcación de recursos. El __MACOSXdirectorio contiene archivos AppleDouble cuyo nombre de archivo comienza con los ._que se utilizan para almacenar metadatos específicos de OS X. La ziputilidad de línea de comandos descarta metadatos como atributos extendidos, marcas de archivo y bifurcaciones de recursos, lo que también significa que se pierden metadatos como etiquetas y que los alias dejan de funcionar, porque la información en un archivo de alias se almacena en una bifurcación de recursos.
Normalmente, puede descartar los metadatos específicos de OS X, pero puede ver qué archivos de metadatos contienen xattr -l. xattrtambién incluye bifurcaciones de recursos y marcas de archivo, porque aunque en realidad no se almacenan como atributos extendidos, se puede acceder a ellos a través de la interfaz de atributos extendidos. Tanto Archive Utility como la ziplínea de comandos descartan ACL.