Narzędzie zipwiersza poleceń nigdy nie tworzy __MACOSXkatalogu, więc możesz po prostu uruchomić takie polecenie:
zip directory.zip -x \*.DS_Store -r directory
Poniższe dane wyjściowe, a.zipktóre utworzyłem za pomocą zipnarzędzia wiersza poleceń, nie zawierają __MACOSXkatalogu, ale a 2.zipktóry utworzyłem za pomocą Findera.
$ 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_Storenie wyklucza .DS_Storeplików wewnątrz katalogów, ale -x \*.DS_Storerobi.
Plik najwyższego poziomu archiwum zip z wieloma plikami powinien zwykle być pojedynczym katalogiem, ponieważ jeśli tak nie jest, niektóre narzędzia do archiwizacji (takie jak unzipi 7z, ale nie Archive Utility, The Unarchiver unarlubdtrx ) nie tworzą katalogu zawierającego pliki po rozpakowaniu archiwum, co często utrudnia ich znalezienie, a jeśli wiele archiwów jest rozpakowywanych w tym samym czasie, określenie, które pliki należą do którego archiwum, może być trudne.
Archive Utility tworzy __MACOSXkatalog tylko wtedy, gdy tworzysz archiwum, w którym co najmniej jeden plik zawiera metadane, takie jak atrybuty rozszerzone, flagi plików lub rozwidlenie zasobów. __MACOSXKatalog zawiera pliki, których nazwa pliku AppleDouble rozpoczyna się ._, które są używane do przechowywania OS X specyficzne metadanych. Narzędzie zipwiersza poleceń odrzuca metadane, takie jak atrybuty rozszerzone, flagi plików i rozwidlenia zasobów, co oznacza również, że metadane, takie jak znaczniki, są tracone, a aliasy przestają działać, ponieważ informacje w pliku aliasów są przechowywane w rozwidleniu zasobów.
Zwykle możesz po prostu odrzucić metadane specyficzne dla OS X, ale aby zobaczyć, jakie pliki metadanych zawierają, możesz użyć xattr -l. xattrzawiera również rozwidlenia zasobów i flagi plików, ponieważ nawet jeśli nie są one faktycznie przechowywane jako atrybuty rozszerzone, można uzyskać do nich dostęp poprzez interfejs atrybutów rozszerzonych. Zarówno Archive Utility, jak i zipnarzędzie wiersza poleceń odrzucają listy ACL.