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

时间:2014-03-03 02:50:35

标签: bash file-rename batch-rename

我有很多要重命名的文件。以下是示例:

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

对于D8文件,我只想将第7位和第8位更改为“14”。 对于O0文件,第6和第7位也是'14'。

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

感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用:

案例1的

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

案例2:

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

答案 1 :(得分:0)

以下是使用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/#substring/replacement}

如果$substring$string的前端相匹配,请将$replacement替换为$substring

${string/%substring/replacement}

如果$substring$string的后端匹配,请将$replacement替换为$substring