article_image

文件重命名之于文件管理,如同粗盐之于料理,不能批量重命名的大宗文件,让人难以下咽;而今支持批量重命名的工具不再稀缺,macOS 原生就支持批处理。料理文件不再困难的当下,我们有理由追求更精细的味道:用正则表达式,给文件批量重命名增添一分滋味1

正则之妙,在于使用者不仅能够替换固定的字符,更能修改具有一定模式的文件名。例如,iPhone 传输到 Mac 上的照片,均有 IMG_0000 格式之前缀,每张照片中的四位数字各不相同,如需去除,通常只能一一删之;若使用正则表达式,则可以简驭繁,用 \d{4} 表示任何一组四位数字组合2,一举清理它们。正则威力,可见一斑。

Alt text
正则重命名 iPhone 拍摄的照片

试想,如果正则表达式还像家常菜肴一样方便上手,就更没有理由对它敬而远之。实际上,无需考虑动辄上百元的专业工具——例如文件重命名领域的老字号 Renamer,也不需要换用复杂的文件管理器,Shortcuts(快捷指令)本身就配备正则动作,正如躺在您厨柜里的现成食材,值得顺手一试。

基础用法:删除多余字符

安装本 Shortcuts 动作后,需确保在 Shortcuts 编辑器中勾选了“Use as Quick”,并在“Finder”中启用,方可在文件的右键菜单中看到此动作。

Alt text
使用动作前需勾选图中选项

选中任意一组文件后,即可在右键菜单中运行正则重命名动作:和所有文本替换的逻辑一致,首先,您会看到一个需替换字符的输入框,然后,紧接着输入替换后的字符。接续文章开头例子,如果我们想删除 IMG_0000 格式在文件名前缀,可以在待替换一栏中输入 \d{4},后一栏则留空,如此便能将其删除。

Alt text
输入替换前后的表达式

在正式替换之前,该动作还会显示替换前后的文件名对比,并将不会被 Shortcuts 重命名的(即表达式不匹配的)文件分列在一旁。如认为替换效果不达预期——通常是编写正则表达式之际有笔误——则在此步骤勒马即可。

Alt text
重命名效果预览界面

若预览效果令人满意,则可以正式执行替换操作,稍等片刻,Shortcuts 变能将文件名称修改妥当。熟悉正则表达式者,自此可一展拳脚,惟以下二点与标准正则有所差别:其一,在 Shortcuts,并非使用 \1 表示匹配的字符,而是 $1;其二,极少数字符不能使用,目前仅发现英文句号 .。所幸 . 在文件名中本身就被用作分隔符,并非常用符号,此瑕疵之影响应该甚微。

进阶用法:调整字段顺序

删除多余字符,属于正则重命名的基础用法,然而已经不同凡响。试想网上下载的视频字幕、参考文档或规范文件,如果一一删去文件名中的繁杂无用部分,也堪称一件工程;而在熟悉正则表达式的人眼中,删繁就简,不过是两句表达式的功夫。

不过,删除字符,惟发挥出正则功力的十之一二。调整现有文件名之格式,尤其是重新调整字段顺序,方见正则表达式的真本事。比如整理读过的文章,以前我将作者名字置于开头,后来发现,所处领域的文献半衰期太短,五年前的名篇,放在现在可能已经过期。于是发布时间便成了首要的排序维度,文件名也以年份开头。就操作而言,无非是将原文件名中的年份提到开头,用正则表达式,不费三言两语的气力:先用 (.*)\s(\d{4})\s(.*) 把原文件名庖丁解牛,再用 $2 $1 $3 重新编排,便把年份成功提到文件开头,原先按作者排序的文章,也在转瞬之间转为按照年代排列,便于查阅3

Alt text
正则重命名 PDF 文件名

以上替换,如果用 Finder 自带的基础文本替换,怕是力有未逮,最终还得逐个手动重命名。至于工作中八股样式的文件归档,正则重命名更是无往不利。在工作中,我收到的文件多为以下命名方式,虽然简明易懂,但并不符合归档要求。

某公司合规建设-0201-杰律师-定稿
某公司尽职调查-0207-敏律师-定稿
某银行合规演讲-0304-敏律师-二改

现在,假设目标是将上述文件改为 年月日-,我们可以写出两条正则表达式:首先,用 (.*)-(\d+)-(.*律师)-.* 从原文件名中提取数据,然后,替换为 2022$2-$1-$3,即可获得合乎档案要求的格式。显然,不同机构要求各异,而正则表达式始终能够一以贯之,组合出不同格式的文件名称。

小结

正如 Jobs 所言,如果你问问一个人,他到底做了什么创造性的工作,此君只会感到羞愧,因为他不过是将现有的东西联系起来。设计 Shortcuts 动作也大抵如此,正则动作由来已久,将其用在 macOS 文件批量重命名上,几乎只是顺水推舟,乘了 Finder 相关动作的东风。

可惜,在 Shortcuts 登陆 macOS 之后,我们并没有看到新鲜动作井喷泉涌;而一个窗口管理动作,竟也被 MacStories 评上年度最佳,着实是矮子里面拔将军。如果诸君中尚有 Workflow 的前朝遗老,想必会更怀念那个天才设想辈出的时代。借着正则这一古老技术,若能多少让人品尝到早期自动化社区的硬核遗风,便已让笔者知足。

Banner Credit: Beeple

  1. 本文并不负责正则表达式的教学,主要面向已经掌握正则的读者。如果您对其并不熟悉,希望本文可以引起您尝试这种工具的兴趣。
  2. d 表示数字,{4} 意为重复四次。
  3. 在每一次系统更新后,Shortcuts 中的魔法变量都会弄巧成拙,无法正确获取数据,比如把 PDF 的内容识别为标题,如果您不幸中招,恕我既无法查明也无力解决,最经济的方法可能是删除动作并重装。

author_avatar

Lawyer, macOS/iOS Automation Amateur