如何从 Zip 存档中排除文件
目录:
从 zip 存档中排除许多特定文件或一组匹配文件的最简单方法是跳过 Mac OS X 友好用户界面中内置的简单压缩实用程序,转而使用命令行,其中强大的 zip 命令驻留。出于一百万零一个原因,这很有用,但这篇文章的主要动机与 .DS_Store 文件有关,这些文件与在 Mac 上创建的 zip 存档捆绑在一起,只会弄乱另一台解压缩文件的机器,无论它是在另一台机器上Mac、Windows PC 或 Linux。默认情况下,友好的 zip 工具和命令行 zip 实用程序都会发生这种情况,这是因为压缩工具的默认行为是包括隐藏文件,无论它们是否显示。这不一定是坏事,在许多情况下它会被认为是有用的,但如果您不希望它们或任何其他文件出现在您的档案中,请继续阅读。
如何从Zip存档中排除文件
创建 zip 存档时文件排除的基础知识以 -x 标志为中心,该标志用于从存档中排除与特定名称或模式匹配的文件。在最基本的情况下,它看起来像这样:
"zip archive.zip files -x ExcludeMe"
意味着你可以排除一个文件,假设它名为“Nothanks.jpg”
"zip archive.zip images/ -x Nothanks.jpg"
让我们举几个有用的具体例子。
从 Zip 存档中排除 .DS_Store 文件
这将防止通常不可见的 Mac 元数据 .DS_Store 文件包含在默认情况下捆绑的 zip 存档中:
"zip -r archivename.zip archivedirectory -x .DS_Store"
如果目录包含子目录,您将需要使用该命令的另一个变体来从子目录中排除 ds_store 文件:
"zip -r archive.zip directory -x /\.DS_Store"
注意:并非所有 shell 都需要引号才能使此命令正常工作,但在 bash shell(Mac OS X 的默认设置)中,您需要使用引号来排除通配符和模式。
从 Zip 存档中排除特定文件类型
有了通配符,还可以通过关注扩展名来排除某种类型的所有文件。例如,此命令将压缩整个目录,减去任何 .jpg 文件:
"zip -r archive.zip 目录-x .jpg"
可以针对文件名中匹配的任何特定文件扩展名或模式进行修改。
从 Zip 存档中排除 .git 或 .svn 目录
"压缩一个目录,减去.git及其内容:zip -r zipdir.zip directorytozip -x .git "
压缩文件夹,不包含.svn目录:zip -r zipped.zip directory -x .svn "
从压缩包中排除所有隐藏文件
由于可以使用模式和通配符,您还可以排除任何或所有不可见的文件和文件夹,这些文件和文件夹以句号为前缀,无论是像.svn 这样的目录还是像.svn 这样的单个文件.bash_profile 或.htaccess.
zip -r archivename.zip directorytozip -x ."
或者从所有子目录中排除所有不可见文件:
"zip -r archive.zip 目录-x /\."
为 Macworld 论坛上的评论者干杯,以提供从子目录中排除这些文件的精确语法。
最终,这只是高级用户跳转到终端创建档案的另一个原因。凭借通配符支持、排除和可选的 zip 密码保护等强大功能,它的功能更加全面,而且由于它全部包含在 Mac 中,无论如何您都无需下载其他应用程序来支持高级功能。
是的,从技术上讲,如果您决定留在 UI 中,您可以在创建存档之前使用 Finder 和 Spotlight 搜索运算符来缩小 Mac OS X 中的文件夹内容,或者只是全选并手动命令+单击每个文件不包含,但这对于大型归档操作来说确实效率不高。所以,终端还是轻而易举的胜出,尽管以命令行为中心,但只要掌握了基础,其实并不复杂。