在windows系统中,有很多重命名工具,虽然很多都比较优秀,但是面对一些复杂点的文件重命名,就有些吃不消了。下面我将推荐一款,批量重命名工具bulk rename utility汉化版,重点的说一下它的正则表达式高级技巧教程,用于对复杂的文件进行批量处理,文件地址在文章的最后。


使用正则表达式前后颠倒批量重命名

1.歌曲中的歌曲名与明星名字进行对调的批量重命名

在以前下载的mp3中,多数都是歌曲名在前,明星名字在后,中间加上连接符“-”但是在现在的播放器软件当中这种命名方法已经无法识别了,需要把明星名字放在前面,歌曲名放在后面,中间加连接符“-”。一两首歌曲可以使用手动修改,但是在一大堆歌曲当中呢,用手动修改就显得有点笨拙,而且非常浪费时间,这种重复性的劳动,我们就交给bulk rename utility来完成吧。

使用普通的查找和替换是无法达到名字和歌曲名相互交换的目的,比较好一点的办法就是使用正则表达式,要使用正则表达式,首先我们需要对正则表达式,有一个全面的了解,知道不同的文字字符应该用什么符号来匹配。下面是一些常用通配符:

.    任何字符

^    以行开始

$    以行结束

\<    以单词开始

\>    以单词结束

[...]    字符集([abc])或者范围([a-z])

[^...]    字符不设定范围

\d    任何十进制数字

\D    任何非十进制数字

\s    任何空白字符

\S    非空白字符

\w    任意"word"字符

\W    任意非"word"字符

\x    其他特殊含义的转义字符

\xHH    16进制字符代码

?    匹配前面的0或1次

*    0次或多次匹配前面的

+    1次或多次匹配前面的

*?或者+?    非贪婪匹配量词"?"和"+"

(    区域开始  区域结束

\n    替换时指定区域(n是 1-9)

以歌曲“不该为你动了心 - AZ珍珍.mp3”为例子,如果需要把名字“AZ珍珍”放在前面,歌曲名“不该为你动了心”放在后面,在“匹配”这里可以这样写正则表达式:

(\S+)\s*-\s*(\S+)

替换处:

\2-\1

替换前后的效果对比如下图:


可以看出来,替换得非常完美。下面来说说正则表达式的匹配原理:

\S可以匹配非空白字符,包括汉字与字母,这里的歌曲名和明星名字都可以用它来匹配,因为不止一个字符所以我使用了加号“+”,“+”表示1次或多次匹配前面的\S,即匹配了多个非空白字符。另外说明一下,原理上使用\w同样可以,但是bulk rename utility不能识别"word"字符因此使用\S。

在\S+的外面加上小括号形成(\S+),代表一个捕获组,也可以称为匹配组,(\S+)-(\S+)这样两组匹配组分别代表了原始的歌曲名和名字,中间有连接符号“-”,如果连接符号“-”的两边没有空格的话就可以使用(\S+)-(\S+)去匹配,但是事实上在下载的可以中,有些连接符号“-”的两边没有空格,有些又有空格,要两样都兼顾,所以就使用了\s*去匹配了这个空白字符或者没有空白字符,因为* 代表可以0次或多次匹配前面的\s空白字符,所以完整的匹配法就是(\S+)\s*-\s*(\S+)。

在替换处的\2-\1又代表什么呢?\1代表第一个捕获组,同样\2当然代表第二个捕获组,如果有多个,还可以写成\3\4等等,要使它们两个捕获组进行对调,自然就是\2在前\1在后,中间加上连接符号“-”就变成了\2-\1。

1.英文字母名词进行对调的批量重命名

下面我们又以“Zhusir Blog.txt”和“zhu blog.txt”为例子,看看又是如何批量进行对调重命名。

匹配处可以使用

(\S+) (\S+)

或者

(\S+)\s+(\S+)

其中这个\s+可以使用空格,如第一个(\S+) (\S+)那样,但是如果多个空格就需要使用\s+了。下面是文件重命名前后效果:


其实上面的效率远高于网上疯传的:

([A-Z][a-z]+)\s+([A-Z][a-z]+)

或者

([a-z]+)\s+([a-z]+)

因为([A-Z][a-z]+)\s+([A-Z][a-z]+)只针对像“Zhusir Blog.txt”这种第一个字母大写,而([a-z]+)\s+([a-z]+)全部字母小写进行匹配,当然如果需要把大写改为小写,只需要勾选工具中的“大小写”,然后选择“小写”即可。

还有:

([A-Z][a-z]+)\s+([A-Z][a-z]+)

也可以用

([A-Z][a-z]*)\s+([A-Z][a-z]*)

代替使用,只能说([A-Z][a-z]+)\s+([A-Z][a-z]+)必须要有一个小写字母在大写后面,否则无法匹配,不管大写字母后面有没有小写字母使用([A-Z][a-z]*)\s+([A-Z][a-z]*)就能完全匹配。

还有网站流传的:

^([A-Z][a-z]*)\s+([A-Z][a-z]*)$

和我上面写的是一样的效果,加不加起始符^和结束符$,它们效果是一样的,没有任何影响。

使用正则表达式为跳跃式排序进行重新批量重命名

什么是跳跃式排序,即你1、3、5、7、9这样的排序就是跳跃式排序,以001.txt、003.txt、005.txt、007.txt、009.txt这样的跳跃式序号为例,需要把它们改为001.txt、002.txt、003.txt、004.txt、005.txt这样非跃式的排序序号,可以在“正则表达式”的“匹配”中使用:

\d+

在“替换”中使用:

#

因为不使用#作为占位符,无法继续以下的操作,勾选“查找”,在它的下面的“查找”中输入“#”,在其下面的“替换”中什么都不用输入,用于替换掉#号,再勾选“编号”,方式为默认的“插入”,后面选1,开始为1,递增为1,位数为3,就可以进行顺序排序的编号更名了,操作方法如下图:


批量命名的前后对比效果:


使用正则表达式为顺序式排序编号进行重新跳跃式编号批量重命名

如果要求把001.txt、002.txt、003.txt、004.txt、005.txt这样非跃式的排序编号更名为001.txt、003.txt、005.txt、007.txt、009.txt这样的跳跃式编号。

其实需要反过来操作也简单,其他操作同上,只需要把“编号”这个地方的“递增”改为2即可,详细方法如下:

在“正则表达式”的“匹配”中使用:

\d+

在“替换”中使用:

#

同样勾选“查找”,在它的下面的“查找”中输入“#”,在其下面的“替换”中什么都不用输入,用于替换掉#号,再勾选“编号”,方式为默认的“插入”,后面选1,开始为1,递增为2,位数为3,就可以进行顺序排序的编号更名了,操作方法如下图:


批量命名的前后对比效果:


使用正则表达式删除前缀进行批量重命名

有一些文件都有一些特写的前缀,比如DKf004.txt、DKk001.txt、DKs003.txt、DKy002.txt、DKz005.txt。如果需要把DK[a-z]即前面DK,后面变化的小写字母去掉,可以通过正则表达式:

([A-Z]*[a-z]*)+

简化为:

[a-zA-Z]*

替换处不用写任何字符,就把DK[a-z]即前面DK,后面变化的小写字母这样的前缀去掉,效果如下:


还有一种更简单的方法,就是选择删除,如果有几位前缀就把开头选几,如上面例子中是3位字母,所以选3,最终的效果是一样的。如果字母不固定位数,就需要使用上面的正则表达式去替换了。

还有种正则表达式:

[^\d]+

也可以达到同样的效果,\d匹配十进制数字0到9,在它前面加上^,因为^除了代表以行开始,还代表非、不是,所以这里的[^\d]+就是匹配非数字的字段。

同样,需要匹配非字母的正则表达式也可以写成:

[^A-Za-z]+

使用正则表达式对后缀文件名进行批量重命名

对于像001zdj.txt、002jzd.txt、003cmyn.txt、004Uc.txt、005.txt这样夹杂着字母的后缀(注意不是后缀名),且字母长度和大小写不一定的情况,同样只能使用正则匹配,正则表达式如下:

(\d+)([a-zA-Z]+)

替换中写入:

$1或者\1

$1或者\1都是表示保留第一捕获组数字部分,这样就把字母后缀给删除掉了。替换前后效果和操作如下图:


使用正则表达式对前后中间不定位置都有字母或其他字符的文件名进行批量重命名

当遇到一些杂乱无章的文件名时,这时的文件名已经不具备特殊的意义了,比如ATOc01zdj.txt、 cfjk002jzd.txt、dki003cmyn.txt、 Oyf04Uc.txt、0j0c5.txt这样的文件,如果需要排序不打乱,可以先给它插入前缀,比如A001到A005,如果只添加单纯数字编号,是无法实现的,操作方法是:

先勾选“添加”,在前缀上输入a,其他不管,记住不要选择“插入”,然后再勾选编号,方式为插入,插入位数在1,开始为1,递增为1,编号位数为3,方法和效果如下图:


接下来使用正则匹配清除不要的字母和数字,正则表达式为:

(a)(\d{3})(\S+)

替换处写入:

$2或\2

其中(a)(\d{3})(\S+)中的三个小括号代码三个捕获组,第一组为单个小写字a,所以使用(a),当然也可以使用([a-z]),第二组为3位数字的编码,所以使用(\d{3}),{3}匹配3位十进制数字,第三组即有数字也有字母,我们就使用(\S+)就给全部匹配了,在替换中的$2或\2即代表保留第二捕获组,其余的就被轻松替换掉,方法与效果如下图:


还有一种比较简单粗暴,在不管排序的情况下,给它加入一个编码,正则表达式为:

\S+

替换为:

#

#为点位符号,需要替换掉,在勾选“查找”中,在“查找”框中键入#,替换处不用写任何东西,再勾选编号,方式为插入,插入位数在1,开始为1,递增为1,编号位数为3,方法和效果如下图:


好了,复杂的重命名也讲得差不多了,其他那些都比较简单,自己摸索下也能搞懂,搞不明白的可以评论,我会不定期的回答。

文件地址

点击下载

访问密码:8832

备用下载

提取码: zhus

解压密码为:zhu-sir.com

你可能想看:
文章来源:http://www.zhu-sir.com/jiaocheng/62.html
百度搜索本文
谷歌搜索本文

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

返回顶部