关于批量重命名
wils
Lv.2潜力创作者
前两天有朋友问,如何将目录里的 “证据3:测试内容.pdf” 这样的文件,批量重命名
让 “证据” 后面的数字减少2
目前用过的工具里,我觉得perl的rename脚本最为方便,在这里先介绍一下:
| 🔔 | rename 's/^证据\K\d+/$&-2/e' *.pdf |
这个命令只有三个部分:
rename是命令
*.pdf匹配当前目录所有pdf文件
关键是中间那个表达式
从整体看s/x/y/z是个正则替换语句,s表示替换,/是分隔,x是查找的正则,y是替换成的表达式,z是flags(比如g表示全局i表示忽略大小写等)
x是^证据\K\d+,表示以“证据”开头,后面跟着的多个数字
y是$&-2,表示匹配到的数字减2
z是e,表示y这个部分需要求值,而非纯字面的字符串替换
个人感觉这个工具特别直观,正则匹配,然后表达式求值
相比之下,windows里的powershell也显得稍微麻烦一点
不知道批量重命名工具能否借鉴一下,提供正则替换方式,但求值这一步恐怕不好弄😁
另外有的朋友实在不喜欢代码
可以在论坛里搜一下基于表格的重命名工具
就是做个wps表格,然后弄两个宏按钮
点击按钮加载指定目录的所有文件名写入A列
然后用筛选、公式等任何你熟悉的方式,在B列计算出新文件名
点击按钮批量重命名A列为B列
第一个按钮用FileSystem.readdirSync
第二个按钮用ffi调用SHFileOperationW,支持撤销的重命名
方法都是现成的,但我还是觉得不如代码来的灵活,希望更多朋友来尝试,提出更好的方案