L' ziputilità della riga di comando non crea mai una __MACOSXdirectory, quindi puoi semplicemente eseguire un comando come questo:
zip directory.zip -x \*.DS_Store -r directory
Nell'output seguente, a.zipche ho creato con l' ziputilità della riga di comando non contiene una __MACOSXdirectory, ma a 2.zipche ho creato dal 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_Storenon esclude i .DS_Storefile all'interno delle directory ma lo -x \*.DS_Storefa.
Il file di livello superiore di un archivio zip con più file dovrebbe in genere essere una singola directory, perché in caso contrario, alcuni programmi di utilità di archiviazione (come unzipe 7z, ma non l'utilità di archiviazione, The Unarchiver unaro dtrx) non creano una directory di contenimento per il file quando viene estratto l'archivio, il che rende spesso difficili da trovare i file, e se più archivi come quello vengono estratti contemporaneamente, può essere difficile dire quali file appartengono a quale archivio.
L'utilità di archiviazione crea una __MACOSXdirectory solo quando si crea un archivio in cui almeno un file contiene metadati come attributi estesi, flag di file o fork di risorse. La __MACOSXdirectory contiene file AppleDouble il cui nome inizia con ._quello utilizzato per memorizzare metadati specifici di OS X. L' ziputilità della riga di comando ignora metadati come attributi estesi, flag di file e fork di risorse, il che significa anche che i metadati come i tag vengono persi e che gli alias smettono di funzionare, poiché le informazioni in un file alias vengono archiviate in un fork di risorse.
Normalmente puoi semplicemente scartare i metadati specifici di OS X, ma per vedere cosa contengono i file di metadati, puoi usarli xattr -l. xattrinclude anche fork di risorse e flag di file, perché anche se non sono effettivamente archiviati come attributi estesi, è possibile accedervi tramite l'interfaccia degli attributi estesi. Sia l'utilità di archiviazione che l'utilità della zipriga di comando eliminano gli ACL.