批量重命名文件名的特定数字

问题描述:

我有很多要重命名的文件。下面是例子:批量重命名文件名的特定数字

D801040001 ---> D801041401 /
D801040002 ---> D801041402 /
O010900001 ---> O010914001 /
O010900002 ---> O010914002 

对于D8文件,我只是想改变第7和第8位数字为'14'。 对于O0文件,第6和第7位也是'14'。

我的问题是,我不知道如何使用脚本重命名文件。

谢谢。

您可以使用:

的情况下1:

rename 's/^(D8.{4})..(.*)$/${1}14${2}/' D8* 

的情况下2:

rename 's/^(O0.{3})..(.*)$/${1}14${2}/' O0* 
+0

主席先生,你能否为这些案件做精心设计? – user3003001

+0

你有没有尝试过这些命令,并做到了这一点? – anubhava

+0

我尝试过使用cmd,但它说“命令的语法不正确”。 – user3003001

这里使用bash另一种方式:

案例1:

for file in D*; do mv "$file" "${file/#D8010400/D8010414}"; done 

情况2:

for file in O*; do mv "$file" "${file/#O010900/O010914}"; done 

说明:的$string

${string/#substring/replacement} 

如果$substring匹配前端,替换为$replacement$substring

${string/%substring/replacement} 

如果$substring$string结束比赛回来,替换为$replacement$substring