你有一个文件夹,里面都是像"report_2026-03-15_draft_v2.pdf"这样的文件,你需要提取出日期并重新格式化,或者去掉下划线后面的所有内容,或者替换一个在不同文件里各不相同的模式。简单的文本替换做不到这一点,因为这些文本在每个文件里并不完全相同——它们遵循的是一种规律。
正则表达式(regex)正是用来做基于规律的文本处理的工具。它能让你根据规则而不是精确字符串,去匹配、捕获并重新排列文件名的各个部分。问题在于,macOS 在 Finder 里根本没有提供正则重命名功能。
Terminal 方案,以及为什么大多数人都避开它
你可以用 Terminal 命令,比如 rename、sed,或者带参数展开的 bash 循环来用正则重命名文件。例如:
for f in *.pdf; do mv "$f" "$(echo "$f" | sed 's/draft_v[0-9]*/final/')"; done
这确实有效,但也有实实在在的缺点:
- 没有预览——只有等重命名执行完,你才能看到结果
- 正则表达式里一个笔误,就可能把文件名搞得一团糟,而且没法撤销
- 在单行命令里编写和调试正则表达式非常痛苦
- 非技术用户几乎不可能真正用上这种方法
就连经验丰富的开发者也会在处理大批量文件时避开 Terminal 重命名,因为不可逆错误的风险太高了。
带实时预览的正则重命名
Renym 在查找替换操作中内置了完整的正则表达式支持。你写一个正则模式,定义替换内容(可以引用捕获组),就能实时看到它作用在每个文件上的结果——而且是在任何文件真正被重命名之前。
实战中的捕获组
假设你的文件名是"2026-03-15_project_alpha.pdf",你想要的是"project_alpha_2026-03-15.pdf"。写一个正则,把日期和项目名分别捕获为两个组,然后在替换字段里重新排列它们的顺序。预览列会立即显示每个文件的新名称。
基于模式的批量剥离
需要去掉所有版本后缀,比如"_v1"、"_v2"、"_v14"吗?像 _v\d+ 这样的正则表达式会匹配所有这些后缀,不管数字是多少。一个操作,一个模式,所有文件一并清理干净。
把正则和其他操作组合起来
正则只是流水线中的一个操作。在正则替换之后,你还可以添加顺序编号、改变大小写,或者插入文本。每一步都建立在上一步的基础上,预览会反映整条链路的结果。
如果你曾经为了调试一条 Terminal 重命名命令浪费掉一个小时,或者因为无法预览结果而干脆放弃使用正则表达式,Renym 可以一次性解决这两个问题。