当我用Mac OSX中内置的zip压缩器压缩文件时,它会在提取的zip中创建一个名为“__MACOSX”的额外文件夹。
我是否可以调整我的设置以避免创建此文件夹,或者我是否需要购买第三方压缩工具?
更新:我刚刚发现了一个OSX的免费应用程序,解决了我的问题:“YemuZip”
更新2:YemuZip不再是免费软件。
当我用Mac OSX中内置的zip压缩器压缩文件时,它会在提取的zip中创建一个名为“__MACOSX”的额外文件夹。
我是否可以调整我的设置以避免创建此文件夹,或者我是否需要购买第三方压缩工具?
更新:我刚刚发现了一个OSX的免费应用程序,解决了我的问题:“YemuZip”
更新2:YemuZip不再是免费软件。
当前回答
可以通过zip -d filename.zip __MACOSX/\*
并且,删除。ds_store文件:zip -d filename.zip \*/。DS_Store
其他回答
你指的是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 file.zip uncompressed
编辑,在许多反对票后:我使用这个选项一段时间前,我不知道我从哪里学到的,所以我不能给你一个更好的解释。克里斯·约翰逊的答案是正确的,但我不会删除我的。正如一个评论所说,它更准确地反映了OP的要求,因为它在没有这些文件的情况下进行压缩,而不是从压缩文件中删除它们。我发现它也更容易记住。
不要压缩任何隐藏文件:
zip newzipname filename.any -x "\.*"
对于这个问题,它应该是这样的:
zip newzipname filename.any -x "\__MACOSX"
必须指出的是,在终端中运行zip命令只是压缩文件,它不压缩任何其他文件。所以这样做的结果是一样的:
zip newzipname filename.any
可以通过zip -d filename.zip __MACOSX/\*
并且,删除。ds_store文件:zip -d filename.zip \*/。DS_Store
我使用这个Automator Shell脚本来修复它之后。 它显示为上下文菜单项(右键单击Finder中显示的任何文件)。
while read -r p; do
zip -d "$p" __MACOSX/\* || true
zip -d "$p" \*/.DS_Store || true
done
使用Automator创建一个新的服务 在“查找器”选择“文件及文件夹” 添加一个“Shell Script Action”