正则小应用:批量修改文件名

766 阅读1分钟
原文链接: zhuanlan.zhihu.com

最近接手了一个新项目,设计师给了很多图片,比如其中一个文件夹是:

因为名字是中文的,所以是不能直接扔到项目里的。

因此一个需求就冒了出来,如何批量修改文件名?

我最开始想到的是使用cmd,比如for + ren等。试了几下,最后没能满足我的需求。

其实,简单的shell命令,还可以百度下,更多的我就不懂了。

我的需求是什么呢?

【拔萝卜-1.png】=>【baluobo01.png】

后来突然想到,我为啥不用用node?

其实个人没有在项目里用它的经验。但百度一下相关API,尝试一下,没想到几分钟就搞定了!

代码如下(rename.js):

let fs = require('fs')
let files = fs.readdirSync('./')
files.forEach(v => {
	if (/(\d+\.jpg)/.test(v)) {
		fs.rename(v, 'baluobo' + RegExp.$1.padStart(6, '0'), () => {})
	}
})

下面是我录的效果:


最后看一下正则那块儿:

/(\d+\.jpg)/.test(v)

当 v 是 "拔萝卜-1.png" 时,正则里括号捕捉的,即RegExp.$1,是 "1.png",后面再用 "0" 补齐成6个字符串。

代码相对,很简单,如果不清楚,欢迎看正则表达式括号的作用

正则又一次帮到了我。

本文完。