文件重命名之于文件管理,如同粗盐之于料理,不能批量重命名的大宗文件,让人难以下咽;而今支持批量重命名的工具不再稀缺,macOS 原生就支持批处理。料理文件不再困难的当下,我们有理由追求更精细的味道:用正则表达式,给文件批量重命名增添一分滋味1。
正则之妙,在于使用者不仅能够替换固定的字符,更能修改具有一定模式的文件名。例如,iPhone 传输到 Mac 上的照片,均有 IMG_0000
格式之前缀,每张照片中的四位数字各不相同,如需去除,通常只能一一删之;若使用正则表达式,则可以简驭繁,用 \d{4}
表示任何一组四位数字组合2,一举清理它们。正则威力,可见一斑。
试想,如果正则表达式还像家常菜肴一样方便上手,就更没有理由对它敬而远之。实际上,无需考虑动辄上百元的专业工具——例如文件重命名领域的老字号 Renamer,也不需要换用复杂的文件管理器,Shortcuts(快捷指令)本身就配备正则动作,正如躺在您厨柜里的现成食材,值得顺手一试。
基础用法:删除多余字符
安装本 Shortcuts 动作后,需确保在 Shortcuts 编辑器中勾选了“Use as Quick”,并在“Finder”中启用,方可在文件的右键菜单中看到此动作。
选中任意一组文件后,即可在右键菜单中运行正则重命名动作:和所有文本替换的逻辑一致,首先,您会看到一个需替换字符的输入框,然后,紧接着输入替换后的字符。接续文章开头例子,如果我们想删除 IMG_0000
格式在文件名前缀,可以在待替换一栏中输入 \d{4}
,后一栏则留空,如此便能将其删除。
在正式替换之前,该动作还会显示替换前后的文件名对比,并将不会被 Shortcuts 重命名的(即表达式不匹配的)文件分列在一旁。如认为替换效果不达预期——通常是编写正则表达式之际有笔误——则在此步骤勒马即可。
若预览效果令人满意,则可以正式执行替换操作,稍等片刻,Shortcuts 变能将文件名称修改妥当。熟悉正则表达式者,自此可一展拳脚,惟以下二点与标准正则有所差别:其一,在 Shortcuts,并非使用 \1
表示匹配的字符,而是 $1
;其二,极少数字符不能使用,目前仅发现英文句号 .
。所幸 .
在文件名中本身就被用作分隔符,并非常用符号,此瑕疵之影响应该甚微。
进阶用法:调整字段顺序
删除多余字符,属于正则重命名的基础用法,然而已经不同凡响。试想网上下载的视频字幕、参考文档或规范文件,如果一一删去文件名中的繁杂无用部分,也堪称一件工程;而在熟悉正则表达式的人眼中,删繁就简,不过是两句表达式的功夫。
不过,删除字符,惟发挥出正则功力的十之一二。调整现有文件名之格式,尤其是重新调整字段顺序,方见正则表达式的真本事。比如整理读过的文章,以前我将作者名字置于开头,后来发现,所处领域的文献半衰期太短,五年前的名篇,放在现在可能已经过期。于是发布时间便成了首要的排序维度,文件名也以年份开头。就操作而言,无非是将原文件名中的年份提到开头,用正则表达式,不费三言两语的气力:先用 (.*)\s(\d{4})\s(.*)
把原文件名庖丁解牛,再用 $2 $1 $3
重新编排,便把年份成功提到文件开头,原先按作者排序的文章,也在转瞬之间转为按照年代排列,便于查阅3。
以上替换,如果用 Finder 自带的基础文本替换,怕是力有未逮,最终还得逐个手动重命名。至于工作中八股样式的文件归档,正则重命名更是无往不利。在工作中,我收到的文件多为以下命名方式,虽然简明易懂,但并不符合归档要求。
某公司合规建设-0201-杰律师-定稿
某公司尽职调查-0207-敏律师-定稿
某银行合规演讲-0304-敏律师-二改
现在,假设目标是将上述文件改为 年月日-
,我们可以写出两条正则表达式:首先,用 (.*)-(\d+)-(.*律师)-.*
从原文件名中提取数据,然后,替换为 2022$2-$1-$3
,即可获得合乎档案要求的格式。显然,不同机构要求各异,而正则表达式始终能够一以贯之,组合出不同格式的文件名称。
小结
正如 Jobs 所言,如果你问问一个人,他到底做了什么创造性的工作,此君只会感到羞愧,因为他不过是将现有的东西联系起来。设计 Shortcuts 动作也大抵如此,正则动作由来已久,将其用在 macOS 文件批量重命名上,几乎只是顺水推舟,乘了 Finder 相关动作的东风。
可惜,在 Shortcuts 登陆 macOS 之后,我们并没有看到新鲜动作井喷泉涌;而一个窗口管理动作,竟也被 MacStories 评上年度最佳,着实是矮子里面拔将军。如果诸君中尚有 Workflow 的前朝遗老,想必会更怀念那个天才设想辈出的时代。借着正则这一古老技术,若能多少让人品尝到早期自动化社区的硬核遗风,便已让笔者知足。
Banner Credit: Beeple