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

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

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

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


当前回答

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

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

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

其他回答

这命令为我成就了这事:

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

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

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

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

清理.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列出里面的文件,检查(可选)

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

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

你不能。

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

zip -d filename.zip __MACOSX/\*

zip命令行工具永远不会创建__MACOSX目录,所以你可以像这样运行一个命令:

zip directory.zip -x \*.DS_Store -r directory

在下面的输出中,我用zip命令行工具创建的a.s zip不包含__MACOSX目录,但我从Finder创建的2.zip包含__MACOSX目录。

$ touch a
$ xattr -w somekey somevalue a
$ zip a.zip a
  adding: a (stored 0%)
$ unzip -l a.zip
Archive:  a.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  01-02-16 20:29   a
 --------                   -------
        0                   1 file
$ unzip -l a\ 2.zip # I created `a 2.zip` from Finder before this
Archive:  a 2.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  01-02-16 20:29   a
        0  01-02-16 20:31   __MACOSX/
      149  01-02-16 20:29   __MACOSX/._a
 --------                   -------
      149                   3 files

-x . ds_store不排除目录中的. ds_store文件。DS_Store。

顶级的zip归档文件多个文件通常应该一个目录,因为如果不是这样,一些unarchiving公用工程(解压缩和7 z,但不是档案效用,Unarchiver, unar,或dtrx)不包含目录创建一个文件档案提取时,通常很难找到的文件,如果多个这样的档案提取的同时,很难告诉哪些文件属于哪个档案。

Archive Utility only creates a __MACOSX directory when you create an archive where at least one file contains metadata such as extended attributes, file flags, or a resource fork. The __MACOSX directory contains AppleDouble files whose filename starts with ._ that are used to store OS X-specific metadata. The zip command line utility discards metadata such as extended attributes, file flags, and resource forks, which also means that metadata such as tags is lost, and that aliases stop working, because the information in an alias file is stored in a resource fork.

通常,您可以丢弃特定于OS x的元数据,但要查看元数据文件包含什么,可以使用xattr -l。Xattr还包括资源叉和文件标志,因为即使它们实际上没有作为扩展属性存储,也可以通过扩展属性接口访问它们。Archive实用程序和zip命令行实用程序都会丢弃acl。