mac用户右键压缩产生的__macosx文件夹可被终端命令zip -r -x解决,-x参数排除扩展属性;也可用keka替代finder压缩,或通过defaults命令禁用外部存储的.ds_store生成。

Mac用户在用Finder右键压缩文件夹后,发给Windows同事解压时总冒出一个叫__MACOSX的文件夹,里面全是看不懂的._开头文件,既占空间又干扰工作——这不是病毒,但必须解决。
用终端命令压缩,一步跳过__MACOSX
打开「终端」,输入命令前先确认当前路径已切换到待压缩文件夹所在目录(可用 cd 命令进入,例如 cd ~/Desktop/project)。
执行压缩命令:zip -r -X archive.zip folder_name/。
【-X 参数是关键】 它会显式排除所有扩展属性和AppleDouble元数据,彻底阻止__MACOSX生成。不加-X的话,系统默认把所有macOS专属信息打包进去,哪怕你只是压缩一个纯文本文件。
压缩完成后检查:用 unzip -l archive.zip | grep "__MACOSX",若无输出,说明成功。
永久禁用.DS_Store与__MACOSX源头
系统级设置能从根源减少这类隐藏文件产生,尤其适合经常跨平台传输文件的用户。
在终端中运行:defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE。
这条命令让Finder不再向网络卷、U盘、移动硬盘等外部存储写入.DS_Store文件,间接降低__MACOSX出现概率——因为压缩时若源目录不含.DS_Store,__MACOSX里就少一项内容。
注意:该设置不影响本地磁盘(如Mac内置硬盘)上的.DS_Store生成,仅作用于外接设备。
用Keka替代Finder压缩(推荐新手)
方法一:下载安装Keka(免费开源,官网keka.io),安装后直接把要压缩的文件夹拖进Keka窗口。
方法二:右键文件夹 →「服务」→「使用Keka压缩」(需首次启用Keka菜单栏偏好设置中的“在服务菜单中添加”)。
Keka默认不打包__MACOSX和.DS_Store,无需额外配置,也不依赖终端命令。它还会自动识别并跳过所有以.或__开头的系统隐藏文件。
这一步操作起来很简单,直接把文件拖进去就行,压缩完立刻就能发给Windows用户,对方解压后干干净净。
已有zip包里删掉__MACOSX(补救方案)
第一步:打开终端,cd 到zip文件所在目录。
第二步:执行 zip -d archive.zip "__MACOSX/*"。
第三步:再执行 zip -d archive.zip "*.DS_Store"。
第四步:验证是否清理干净:unzip -l archive.zip | grep -E "^__MACOSX|\.DS_Store",若无任何输出即完成。
注意:zip -d 是直接修改原压缩包,不可撤销。操作前建议先备份原文件。











