用正则表达式批量重命名

廉价感情. 提交于 2020-03-27 17:45:44

最近拍了一些照片,开始有意识地上传到PPBC中国图像库保存。PPBC有自动识别的功能,即文件名中包含植物拉丁文名或中文名的情况下,系统可以自动鉴定为相应的物种。这就经常需要对图片重命名,我一般随手写个.bat文件,用dos的rename命令搞一下,非常便捷高效。但人老了总是很糊涂,一是经常记不住相应的命令,像今天建了个txt文件写好了命令,却忘了可执行文件的后缀是啥,改了啥.exe .cmd,真丢人;二是正则匹配经常翻车,下面重点记录下正则表达式的匹配情况。

 

D:\photo\2020\0326观光木\手机 目录下有一批文件,格式是这样的:

IMG_20200326_153346.jpg

IMG_20200326_153346.jpg 这是华为手机的自动命名方式,IMG开头加上日期,再加上一串6位的数字,其中前两位还是保持不变的。

 

我的本意是想在文件名后面加上“_观光木”,于是写了以下命令:

rename IMG_20200326_15*.jpg IMG_20200326_15*_观光木.jpg

结果文件被命名成这样了:

IMG_20200326_153346.jpg_观光木.jpg

把所有的都匹配上了,超吓人的有木有?

 

改成这样只好去好好研究一下正则表达式,然后想办法改回来:

rename IMG_20200326_15[0-9]{4}.jpg_观光木.jpg IMG_20200326_15[0-9]{4}_观光木.jpg

我用在线检测工具测试过,这样是可以匹配到的,但却无法执行后续的重命名操作。

 

为什么?难道是命令太复杂了?改了一种写法:

rename IMG_20200326_15????.jpg_观光木.jpg IMG_20200326_15????_观光木.jpg

它就好了。这是什么原理我还搞不明白,姑且先记录之。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!