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

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

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

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


当前回答

这命令为我成就了这事:

zip -r Target.zip Source -x "*.DS_Store"

zip是要创建的zip文件。Source是要压缩的源文件/文件夹。-x参数指定要排除的文件/文件夹。

如果上面的方法不管出于什么原因都不管用,试试下面的方法:

zip -r Target.zip Source -x "*.DS_Store" -x "__MACOSX"

其他回答

不要压缩任何隐藏文件:

zip newzipname filename.any  -x "\.*"

对于这个问题,它应该是这样的:

zip newzipname filename.any  -x "\__MACOSX"

必须指出的是,在终端中运行zip命令只是压缩文件,它不压缩任何其他文件。所以这样做的结果是一样的:

zip newzipname filename.any

你不能。

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

zip -d filename.zip __MACOSX/\*

你指的是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.

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

zip -d filename.zip "__MACOSX*"

最适合我

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

zip -r -X Archive.zip *

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

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