文章导读
本文经过几日的修改,篇幅已近 8000 字,涵盖文件自动化管理概念、使用详解、经典应用对比等三大块内容,实用性进一步增强(说人话:补了大篇幅的干货)。为方便读者,特设此导读。
2005 年,OS X 10.4(代号 Tiger)发布,图形化的自动化工具 Automator 随之出世,让不懂编程的用户也能创建自动化动作,简化自己的工作流。在它的诸多功能中,有一类叫做 Folder Action(文件夹动作),专门为整理文件而生。比如说,你刚下载了一个压缩包,它自动帮你解压;又如,不用你隔三差五清空垃圾桶,它每过几天就自动倾倒。 一年之后,一个貌似是从 Automator 中拆分出来的文件自动化管理工具问世。这个工具甚至没有自己的界面,它只需系统设置面板的一隅之居,就能默默无闻地帮你整理文件。
时过境迁,十多年过后的今天,被苹果冷落1 的 Automator 已是古调不弹,而当年的那个「模仿者」却不断进步,牢牢坐上了自动化文件管理工具中的王座。
在这篇文章中,我将先从整个自动化文件管理工具的角度,谈谈我们为什么需要这类工具;进而,我会剖析 Hazel 的核心优势,并引出本文最重要的部分——使用详解;最后,我会通过和其他经典自动化工具的对比,阐述为何对于真正的 Power User 来说,Hazel 这名老将至今无人能望其项背。
文件管理自动化,理所应当
文件自动化管理工具,就是一种以特定文件夹内的文件(以下简称「文件」)的变化为触发条件、进而执行对应操作的工具。
不过,关于这些工具,我们常听到的例子——自动解压、自动清空垃圾桶——过于稀松平常,表面上看只是把三步并作两步,以至许多人开始怀疑专业文件管理工具的必要性,甚至有人宣称,自己有着良好的文件管理习惯,不需要工具来帮忙。
其实,持有这些观点的人,一旦尝过自动化文件管理的甜头,就会意识到这些工具理应是系统的一部分,电脑中的文件就应该自动归档、自动排列好,等等。如果再让他们回到以前的文件管理状态,不亚于把一个习惯了 24 小时水电、Wi-Fi 供应的人逐至条件艰苦的边陲。
五年前,MacStories 主编 Federico Viticci 在初次接触 Hazel 时将「自清洁、自整理的电脑状态」称作 乌托邦;而今拜这类工具的强大和易用所赐,人人都可以享受到更好的文件管理体验,没有整理习惯的人能借助它们让文件更加整齐,而本来就井井有条的用户则得以通过自动化的工具降低手工整理的劳动量。 在后台帮你整理文件
不整理文件的人并不罕见,典型如我的一位同学,她的桌面就是一团糟,更可怕的是她的归档毫无逻辑可言,基本是看心情随意建文件夹。自动化的文件管理工具,可以说再适合这类用户不过。
为了不让我们的小组设计作业消失在她黑洞一样的文件夹里,我给她设置了一个非常基础的 Automator 2 动作,可以自动把桌面上的工程文件、 Photoshop 文件打上显眼的红色标签,并放进「作业」文件夹,防止它们莫名其妙找不到。
让整理文件自动化
有人会骄傲地说:我每天例行整理文件,不仰赖自动化工具。整理是一个好习惯,但是我们不妨回顾一下自己工作/任务记录——如果你有整理文件的习惯,记录又事无巨细——那你很容易发现自己隔三差五就会有一些归档文件的操作。
我从开始接触计算机起就是一个喜欢手动做整理的人,但回头看看自己做重复动作的时间,我意识到这些以移动文件、打标签和重命名为主的机械劳动,完全可以交给机器。
正因为我们有着良好的整理习惯,而这些习惯往往有着一套程序一般严格的流程,所以它们非常适合通过自动化的方式来实现。
不过,一个横亘在人们面前的问题就是:
会写代码的人不多,文件整理的需求却几乎人人都有。
这个问题在十多年前就得到了计算机设计者和使用者的重视,于是就有了本文开头的那段历史。现在,我们已经有了更多丰富、成熟的解决方案,而 Hazel 则是其中最易用、泛用而扩展性最强的一个。
自动化管理文件的翘楚:Hazel
文件自动化管理听上去非常简单,似乎不过是「触发条件」和「需执行的操作」两部分组成的一个自动化动作。但在实际使用中,触发的条件可以非常复杂,所执行的操作也应当留有足够的自定义空间。
Hazel 不同凡响的地方就在于从最简单的一个动作,进阶到复杂的使用场景都能兼顾。
谈到文件自动化管理,我们能想到的最基础的一个需求就是自动清理文件。这个概念比较模糊,我举自己的几个例子来细说:
让我们从这些最简单的需求出发,来认识一下 Hazel 的基本界面和最简单的功能。
Hazel 的界面:Folders 和 Trash
Hazel 没有单独的 App 界面,它的所有设置界面都在系统设置中(在系统设置面板最下面一栏),打开后可以看见 Hazel 设置有三个页面:
先说后两者,它们比较简单,Trash 中是 Hazel 自带的回收站和 App 残留文件清理功能,而 Info 则是注册信息、通知类型等其他设置。最重要的是 Folders 界面,这篇文章主要就基于 Folders 之下的功能来写。
第一次见到这个简陋的三栏界面时,你可能也像当初的我一样几乎要大呼「上当」,因为它看上去实在简单,给人的第一印象就是「配不上那两百多元的售价」。先不急,我们先看看 Hazel 能不能满足上文提到的需求:三种清理。如果不费力气地设置一番就能满足我们的需求,那么 Hazel 的界面就是「简约」而不是「简陋」,也就无可非议了。
Trash:清理垃圾桶和 App 残留
1. 垃圾桶的清理
我有隔三差五倾倒垃圾桶的习惯,但有时看完一部电影忘了清理、造成电脑空间不足,有时则把可能还要用的文件一并清理掉。在购买 Hazel 后,我马上照着官方的说明文档打算做一个自动清理的规则,希望它能优先清理掉那些占用大量空间的文件,尤其是电影。
其实没有必要自己做,Hazel 关于垃圾桶清理的选项赫然列在 Trash 页面中,我们可以马上拿来用。
Hazel 清理垃圾桶的依据有两个维度:
一旦满足任何一个条件,Hazel 的清理功能就启动了。可以说这两点很好地概括出了「值得清理的垃圾」的特征:体积大,放得久。我设置的条件是「超过一周、垃圾桶超过 500m」,在我的使用场景中,能让垃圾桶撑破 500m 的只有视频(电影)文件,它们是看完就可以放心删除的。而 Hazel 会优先删除最大的那些文件,直到垃圾桶内文件小于 500m 它就停工,不至于一股脑把所有东西删掉,我曾经多次顺利找回一些稿件的历史版本。
当然,具体的时间、垃圾体积和是否当场删除,你都能自行设置,以满足不同的使用环境。
2. App 残留内容的清理
Hazel 的 App 残留清理的功能(Enable Application Sweep)也在 Trash 中,这是一个我在完全不了解 Hazel 规则如何使用时就会用的功能。
在 Mac 上清理 App 残留一直以来是一个非常大的问题,App 在哪些地方创建了支持文件、缓存文件我们很难得知,所以一众清理工具的原理一般也是「猜」,即猜一猜哪些路径会藏污纳垢,有的话,就它们删掉。由此,我们几乎不可能彻底清理残留文件,但是可以删掉那些体积巨大的、可能影响使用的配置文件,让电脑尽可能达到清洁的状态。
在这个前提下,我们可以看到 Hazel 的清理效果还是让人满意的,能够侦测到 .plist 配置文件和 Application Support 文件夹下的缓存文件。
效果是一方面,Hazel 另一个方便的地方在于能自动检测 App 残留文件,图示的 Keka 是我刚刚删除的,Hazel 马上就发现了可以清理的东西。
从自动归档文件认识规则
Trash 功能很方便,就像已经送到你嘴边的快餐,但是想实现更加客制化的文件自动管理功能,我们就需要自己编辑规则了。
现在让我们把注意力集中在 Folders,来看看映入眼帘的两个主要区域:左侧的文件夹(Folders)列表和右侧的规则(Rules)列表。这很好理解,对于特定的文件夹,应用对应的规则(规则前打勾即表示应用),不会互相影响。你可以在这里继续增加你想要自动化管理的文件夹。接下来我们看看一条最简单的规则是怎么构成和运作的。
在 Hazel 里,一条规则有两部分,下面这条自带规则就是一个简明的例子。下图红色框内就是「条件」,橙色框内则是「动作」,联系上一段的文件夹,一个规则的运作方式就是:
对于文件夹A,如果满足条件B,就执行动作C。
这个自带的示例规则,作用就是当下载文件夹内出现音乐文件时,把后者移到 Music 文件夹内。不过我们先不要急着启用它,不然会吃苦头,下面的小节将说明为什么。这里卖个关子:如果你发现了这个规则中的问题,恭喜你悟性很好,下面的文章读起来将驾轻就熟;暂时没发现问题也不要紧,我将会一五一十地说明。
Hazel 条件
条件间的关系
一个条件往往是不能满足我们的,比如上面那个 Hazel 自带的归档规则,实用性就值得质疑:所有刚刚下载的文件都会被归档——即使我原本打算试听一下再决定是否归档。此时我们就可以增加一个条件「Date Added is not in the last 2 day(添加日期不是在最近两天内)」,就能给归档动作留一个缓冲期。那些我放了两天都没删的音乐,才是真正应该被归档的。
注意此时红框内的 all,它表示要同时满足「Kind…」和「Date Added…」两个条件。在实际使用中,我们可以把 all 换成 any 或 none,实现而且、任一和不是三种不同的逻辑关系。
常用条件
如果你边使用 Hazel 边看这篇文章,你应该已经被展开的长长一串条件搞昏了头。好在条件的划分有迹可循,大致分为下面几类。
1.文件名类
文件名、文件拓展名等作为触发条件,非常常用,关键是可以定制得很细致,一下这些都比较实用:
包括/不包括
开头是/开头不是
结尾是/结尾不是
含有……(支持正则表达式)
……
2.日期类
包括文件添加、修改或是最后一次打开的日期,等等,和文件名条件一样,自定义程度颇高。在下面这个自动归档 PDF 文件之规则的编辑界面,我们能看到日期支持多种关系:
3.其他文件属性
包括文件的标签、大小等等。
对了,你可以在条件列表的最下面看到 others,这里面是一些不常用的或最新 macOS 中已经失灵的文件属性,暂不展开。
复杂条件
真正使用文件管理工具时,我们常常遇到一些不遂人愿的文件,需要复杂的条件判断才能应对。
写这篇文章时,我为了方便给图片命名,就预设这样的规则:「如果格式是 .png 而且文件名不含『hazel』,就在文件名前加上『hazel-』」。
实际上我也有 .jpeg 结尾的配图,我不愿意为它们另创立一条规则,但是直接挤进原规则似乎也不合适,因为原规则条件中的逻辑关系是「而且」,显然「.png 而且 .jpeg」的图片是不存在的。
此时,Hazel 的分组条件就派上了用场,我得以设置多组条件,各组之下的条件之间可以有不同的关系。多考虑一些情景,新规则的条件就诞生了:
格式是 .png 或 .jpeg 或 .gif
满足上面格式条件,而且文件名不包含「hazel」
它就满足了重命名的需求:
Hazel 动作
和条件一样,Hazel 的动作也非常丰富且有合理的分类。
1. 文件移动类
把文件移动到各种地方,甚至可以上传到服务器。在各种归档动作中,文件移动是必不可少的。
列表靠后还有两个「import to…」动作,能将文件导入到 Photos 或 iTunes 库中,实质也是一种文件移动,但目的地是这两个应用封闭的文件库。
2.文件属性类
能改变文件的各种属性,比如文件名、标签、注释。最值得一提的是重命名(Rename),虽然它被 Hazel 放在文件移动类的动作中,但为了便于理解,我把它归类到文件属性类中。
Hazel 对重命名的支持非常细致,我用 Hazel 自动处理的是每周工作总结,我所需的文件名格式是 工作记录+当周开始日期~结束日期,比如 工作记录2018-01-01~01-07。令人欣慰的是,Hazel 的重命名动作中预设了表示日期的标签,并且可以进行自定义,我能够像拼积木一样把两个日期加入新文件名中。
3. 压缩和解压
压缩或解压文件,我常用的一个自动解压下载文件的规则,就利用了这个动作(文章开头有视频演示):
4. Finder 相关
最常见如打开文件、在 Finder 中显示。打开文件的动作能够指定应用程序,我就指定了 The Unarchiver 来自动解压 .rar 文件(默认 unarchive 不能对付这种格式)。 6. 脚本支持
对于 Power User 来说,一个工具是否 scriptable(支持脚本)就决定了它的拓展性有多高。这个道理在 Hazel 这里同样适用,我们可以在最后几个动作里看到 AppleScript、JavaScript 和 shell 脚本的身影,并且和 Drafts、Copied 这些出色的工具一样,Hazel 也自带了一些变量,我们可以直接拿来用,不需要从零开始敲代码。
下面的例子很有趣,它用了标准的 AppleScript 语言,当侦测到桌面文件太多时,就帮我换一张简约点的壁纸,让桌面看上去干净许多。
但在本文中我不打算继续说明脚本的强大之处,毕竟懂的人自然懂;相反,我鼓励你刚起步时多多使用 Hazel 的图形界面,就像上一节中重命名的例子,图形界面的操作已经足够强大而易用,弃之不用去研究脚本反而是在讽刺效率。
脚本是万能开锁工具,而 Hazel 的图形界面是现成的钥匙,我们有钥匙可用何乐不为。
7. 规则拓展
这类动作比较高级,Run rules on folder contents 除了对满足条件的文件应用规则,也能把规则应用到其所在文件夹内的所有文件上。而 Continue matching rules 则在运行这个规则外,还能继续继续执行其他的规则,把多个规则穿起来。
8. 触发通知
发出一条通知。其实也有用处,我拿来监测那些牛皮癣一样的应用有没有污染我的文件夹,对我来说 Music 文件夹内的「网易云音乐」子文件夹就是垃圾文件夹,通过下面的规则,每次它创建出来我就心里有数了。
规则的同步
和 Keyboard Maestro、Workflow 这些优秀的自动化工具一样,Hazel 也可以同步(备份)规则,让你在换电脑后也能顺利用上常用的规则。
值得表扬的是,我们能够只同步部分文件夹的规则。毕竟每台电脑的实际情况不一样,比如我用于写文章的电脑上就有一个名为 Hazel 的文件夹,它被套用了许多自动命名的规则,但在我建模用的 MacBook Pro 上压根没这个文件夹,就犯不着同步相关规则。
你是否需要 Hazel
Hazel 并不是唯一的文件自动化管理工具,包括 Keyboard、Automator 在内,我们其实也接触过其他的工具。了解它们,你才能明白自己是否需要 Hazel。
不少用户为 Automator 和 Keyboard Maestro 背书,认为它们已经满足了文件自动化管理的需求。何况前者免费,后者功能大而全,何须再买一个 Hazel?其实稍加观察,就能发现这两个工具并不能满足哪怕是最基础一档的文件自动化管理。
Automator
谈及 Hazel,Automator 是绝对绕不过去的,毕竟论起「辈分」,Automator 算得上 Hazel 的先驱。
Automator 内建了 Folder Action,可以根据指定文件夹内的文件变化,自动执行一系列操作。得以于原生应用的特殊地位,Automator 可以享受 Smart Folder 般的复杂条件判断、上百个自动化操作,而且它们往往有中文名显示,不可谓不强大、不易用。 但是 Automator 毕竟不是文件管理的专业户,细节上的处理考虑得不到位。回顾一下 Hazel 基础功能部分的例子,Automator 不支持用户自定义标签也罢,居然还把我已经移除掉的系统自带标签重新「上架」,完全可以作为反面教材来衬托 Hazel:
这样糟糕的细节还表现在很多地方。实际的使用体验是,Hazel 很让我放心,总是有我需要的功能,而 Automator 却是一家「有啥买啥,没货就算」的店铺。
更令人痛惜的是,Automator 自去年起已不再更新,不仅新功能指望不上,在文件系统和 macOS 不断迭代的现状下,受此影响首当其冲的 Folder Action 已是漏洞频出,无法放心使用。
我写过一篇关于 Folder Action 的文章 Automator Folder Action:自动解压,其中的自动解压动作现在已经无法正常使用。一旦你启用了 Folder Action 自动化动作,多数情况下除非你重启或登出电脑,不然就不能停止它。此时菜单栏中会持续显示一枚在转动的齿轮,看到它就证明你倒霉了。 Automator 的未来是悲观的,苹果的前自动化产品经理只能给出一个「有需求,去问苹果」的 回答。现在,为了系统的稳定性,我即使手动整理文件也不会使用 Folder Action4 。 Keyboard Maestro
Keyboard Maestro 并不是一个专业的文件管理工具,仅仅能侦测文件夹内有文件新建或移除,但具体发生了什么变化,它就浑然不知。这样的条件判断固然基础,但也有合适的应用场景,《把你的 iOS 设备变成控制 Mac 的「遥控器」》一文中 Hum 最终就选用了 Keyboard Maestro,因为他设计的自动化动作只需要「有新文件出现」这个条件,Keyboard Maestro 功能基础但是刚好够用。 Keyboard Maestro 的可选动作比 Automator 更加丰富,可惜它的触发条件过于囫囵,单单一个「出现或消失」,能满足的使用情形非常有限,比如我想专门对 PDF 文件进行处理,Keyboard Maestro 就根本无能为力。
就像你会用预览工具对图片做简单的标注,但断然不可能让它担当图片处理的主力一样,Keyboard Maestro 同样不能独立满足文件自动化管理的重任。
Hazel
以上,那些侥幸没有遇到 Automator bug 的用户,也许不能理解为何要使用 Hazel;而不需要复杂条件判断的时候,以 Keyboard Maestro 为代表的实惠大碗型自动化工具也无可厚非。
那我们为何还要使用价格不菲5 的 Hazel?我以前也是「免费餐」 Automator 的拥趸(去年我还写了不下十篇关于它的文章),但是它如今已无法正常使用;我为了追求稳定性而将自动化工作流从 Automator 迁移到 Keyboard Maestro,但是很快发现它的文件触发条件实在太基础,无法胜任我多个学科资料整理的需求。
最终,辗转到 Hazel 的我意识到:
唯有一个稳定的、持续更新的、能根据复杂条件对文件执行精确操作的自动化管理工具,才能可靠地帮我自动整理文件。
小结
如果你也在使用 Mac,文件自动化管理工具就是你电脑中的 missing part,而 Hazel 则是其中跑得最前面的一个。
如同输入增强工具 TextExpander、启动器 LaunchBar 一样,你使用时感觉不到它们的存在,但是哪天你换了台没装这些工具的 Mac,就会发现自己字也不会打、应用也不知道怎么启动、文件也整理不好。
这不是你的问题,因为对于一个追求效率的人来说,他的电脑本来就应当帮你做好这些琐事。