如何删除 macOS 压缩包中的隐藏文件?在工作中,压缩打包文件是不可缺少的一项工作。为了避免文件的损坏和缺失,我们通常在macOS系统中,把多个文件或文件夹压缩后进行传输,我们一般使用访达(Finder)右键菜单中的压缩功能,十分方便。然而却有个问题,就是压缩后的文件中包含 __MACOSX、.DS_Store 等 macOS 系统隐藏文件。

13151818_6c303aa907.jpeg

如果是在 macOS 系统上进行解压或查看,这些文件是隐藏的,没有什么影响。但如果是发送给 Windows 系统用户,则解压后这些文件就会显示出来,可能引起对方的疑惑,造成不必要的麻烦。

13150801_d9e50e4ad5.png

压缩文件中的隐藏文件

其实,我们可以使用 macOS 自带的自动化软件自动操作(Automator)来解决这个问题。

解决方法
这里,可以用Oka解压专家,解压后双击安装。

之后,如果需要去除 Zip 压缩文件中的系统隐藏文件,直接选择其右键菜单服务项目中的「净化Zip压缩文件」即可。处理完成时,还会发出提醒。

13151153_c9ff4a2b93.gif

演示

原理

使用「自动操作」打开后,可以看到其内容并不复杂。首先,其工作范围设定在“访达中的文件或文件夹”,这样就只会在这些位置的右键菜单中出现。当然,你也可以根据自己的需要进行修改。具体的文件处理操作则是由 Shell 脚本完成的。处理完成后发出通知提醒。

13151320_8172c91a2c.png

内部流程

Shell 脚本内容如下,同样是使用的 macOS 自带命令,不需要额外安装软件也无需网络,支持多文件批量操作。脚本的大致流程为:对选中的每个文件,判断是否为 zip 压缩文件,如果是则进行净化操作。


# 循环处理选择的多个文件
for f in "$@"
do
# 获取文件类型,以确保是 Zip 压缩文件
fileType=$(file -bI "$f")
if [[ $fileType =~ "application/zip*" ]]; then
# 删除 __MACOSX 与 .DS_Store 文件
zip -d "$f" \*__MACOSX\* || true
zip -d "$f" \*.DS_Store\* || true
fi
done


结语
其实,__MACOSX 与.DS_Store 是 macOS 系统用来保存文件夹自定义图标、其中文件位置等元数据信息的。如果 Zip 压缩文件始终在 macOS 上使用,这些文件就不会显示出来,也不必去除这些文件。

你也可以使用 Keka、BetterZip 等压缩软件,它们都具有压缩时排除 __MACOSX 与.DS_Store 等文件的功能。