当我用Mac OSX中内置的zip压缩器压缩文件时,它会在提取的zip中创建一个名为“__MACOSX”的额外文件夹。

我是否可以调整我的设置以避免创建此文件夹,或者我是否需要购买第三方压缩工具?

更新:我刚刚发现了一个OSX的免费应用程序,解决了我的问题:“YemuZip”

更新2:YemuZip不再是免费软件。


当前回答

你不能。

但是你能做的就是在压缩后删除那些不需要的文件夹。命令行zip接受不同的参数,其中-d用于根据正则表达式删除内容。所以你可以这样使用它:

zip -d filename.zip __MACOSX/\*

其他回答

可以通过zip -d filename.zip __MACOSX/\*

并且,删除。ds_store文件:zip -d filename.zip \*/。DS_Store

不需要的文件夹还可以通过以下方式删除:

zip -d filename.zip "__MACOSX*"

最适合我

你不能。

但是你能做的就是在压缩后删除那些不需要的文件夹。命令行zip接受不同的参数,其中-d用于根据正则表达式删除内容。所以你可以这样使用它:

zip -d filename.zip __MACOSX/\*

在阅读了所有现有的答案后,我有一个更好的解决方案。所有的事情都可以通过一个简单的右键点击工作流来完成。 没有额外的软件,没有复杂的命令行,没有shell技巧。

自动化工作流程:

输入:来自任何应用程序的文件或文件夹。 步骤1:创建Archive,系统内置默认参数。 步骤2:运行Shell命令,输入为参数。复制下面的命令。 zip -d "$@" "__MACOSX/*" || true Zip -d "$@" "*/。DS_Store" || true

保存它,我们就完成了!只需右击文件夹或大量文件,并从服务菜单中选择工作流。将同时创建没有元数据的存档。

图片更新:当我创建一个新的工作流时,我选择了“快速行动”-这里是一个英文版的截图:

我使用这个Automator Shell脚本来修复它之后。 它显示为上下文菜单项(右键单击Finder中显示的任何文件)。

while read -r p; do
  zip -d "$p" __MACOSX/\* || true
  zip -d "$p" \*/.DS_Store || true
done

使用Automator创建一个新的服务 在“查找器”选择“文件及文件夹” 添加一个“Shell Script Action”