压缩打包是文件管理中不可缺少的功能。多个文件或文件夹压缩后,便于传输,也可避免损坏或缺失。macOS 系统中,我们一般使用访达(Finder)右键菜单中的压缩功能,十分方便。然而却有个问题,就是压缩后的文件中包含 __MACOSX、.DS_Store 等 macOS 系统隐藏文件。
如果是在 macOS 系统上进行解压或查看,这些文件是隐藏的,没有什么影响。但如果是发送给 Windows 系统用户,则解压后这些文件就会显示出来,可能引起对方的疑惑,造成不必要的麻烦。
压缩文件中的隐藏文件
其实,我们可以使用 macOS 自带的自动化软件自动操作(Automator)来解决这个问题。
解决方法
这里,可以下载我制作的 净化Zip压缩文件.workflow.zip ,解压后双击安装。
服务安装
之后,如果需要去除 Zip 压缩文件中的系统隐藏文件,直接选择其右键菜单服务项目中的「净化Zip压缩文件」即可。处理完成时,还会发出提醒。
演示
原理
使用「自动操作」打开后,可以看到其内容并不复杂。首先,其工作范围设定在“访达中的文件或文件夹”,这样就只会在这些位置的右键菜单中出现。当然,你也可以根据自己的需要进行修改。具体的文件处理操作则是由 Shell 脚本完成的。处理完成后发出通知提醒。
内部流程
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 等文件的功能。