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

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

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

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


当前回答

在你想要压缩的文件夹中,在终端:

zip -r -X Archive.zip *

其中-X表示:排除那些不可见的Mac资源文件,如“_MACOSX”或“。“_Filename”和“。ds”存放文件

注意:将只适用于文件夹和后续的文件夹树,你在,必须有*通配符。

其他回答

在你想要压缩的文件夹中,在终端:

zip -r -X Archive.zip *

其中-X表示:排除那些不可见的Mac资源文件,如“_MACOSX”或“。“_Filename”和“。ds”存放文件

注意:将只适用于文件夹和后续的文件夹树,你在,必须有*通配符。

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

自动化工作流程:

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

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

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

你指的是zip命令行工具还是Finder的压缩命令?

对于zip,您可以尝试——data-fork选项。如果这不能解决问题,您可以尝试——no-extra,尽管这似乎忽略了其他可能有价值的文件元数据,如uid/gid和文件时间。

对于Finder的压缩命令,我不相信有任何选项来控制它的行为。这是一个简单的例子。

The other tool, and maybe the one that the Finder actually uses under the hood, is ditto. With the -c -k options, it creates zip archives. With this tool, you can experiment with --norsrc, --noextattr, --noqtn, --noacl and/or simply leave off the --sequesterRsrc option (which, according to the man page, may be responsible for the __MACOSX subdirectory). Although, perhaps the absence of --sequesterRsrc simply means to use AppleDouble format, which would create ._ files all over the place instead of one __MACOSX directory.

清理.DS_Store和__MACOSX中的.zip文件,包括子文件夹:

zip -d archive.zip '__MACOSX/*' '*/__MACOSX/*' .DS_Store '*/.DS_Store'

介绍:

像往常一样,右键单击文件(或文件夹)并选择“压缩…” 打开终端应用(在Spotlight搜索中搜索终端) 在终端输入zip(但不要按回车键) 将.zip拖到终端,使其转换为路径 复制粘贴- d ' __MACOSX / * * / __MACOSX / * .DS_Store”* /。DS_Store” 回车 使用zipinfo archive.zip列出里面的文件,检查(可选)

这是我在使用tar命令压缩文件时避免__MACOSX目录的方法:

$ CD dir-you-want-to-archive $ find。| xargs xattr - l# <-列出所有具有特殊xattr属性的文件 ... ./conf/clamav: com.apple.quarantine: 0083;5a9018b1 ./conf/global: com.apple.quarantine: 0083;5a9018b1;Safari ./conf/web_server: com.apple.quarantine: 0083;5a9018b1

先删除属性:

找到。|xargs xattr -d com.apple.quarantine

运行find。| xargs xattr -l,确保没有任何文件具有xattr属性。然后你就可以开始了:

你是水手bz2你