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

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

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

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


当前回答

zip -r "$destFileName.zip" "$srcFileName" -x "*/\__MACOSX" -x "*/\.*"

-x "*/\__MACOSX":忽略你提到的__MACOSX。 - x”* / \。*":忽略任何隐藏文件,如. ds_store。 如果变量以空格命名,则引用该变量以避免文件。

此外,您可以构建Automator Service,使其易于在Finder中使用。 如果需要,请检查下面的链接查看详细信息。

Github

其他回答

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

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

这命令为我成就了这事:

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

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

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

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

这是我在使用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你

你不能。

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

zip -d filename.zip __MACOSX/\*

不要压缩任何隐藏文件:

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

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

zip newzipname filename.any  -x "\__MACOSX"

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

zip newzipname filename.any