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

Bash 批量重命名文件名的特定数字,bash,file-rename,batch-rename,Bash,File Rename,Batch Rename,我有很多文件要重命名。以下是一些例子: D801040001 ---> D801041401 / D801040002 ---> D801041402 / O010900001 ---> O010914001 / O010900002 ---> O010914002 对于D8文件,我只想将第7位和第8位数字更改为“14”。 对于O0文件,第6位和第7位也为“14” 我的问题是,我不知道如何使用脚本重命名文件 谢谢。您可以使用: 对于案例1: rena

我有很多文件要重命名。以下是一些例子:

 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*

下面是使用bash的另一种方法:

案例1:

for file in D*; do mv "$file" "${file/#D8010400/D8010414}"; done
for file in O*; do mv "$file" "${file/#O010900/O010914}"; done
${string/#substring/replacement}
案例2:

for file in D*; do mv "$file" "${file/#D8010400/D8010414}"; done
for file in O*; do mv "$file" "${file/#O010900/O010914}"; done
${string/#substring/replacement}
说明:

for file in D*; do mv "$file" "${file/#D8010400/D8010414}"; done
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

,先生,您能证明这些情况吗?我用cmd尝试过,但它说“命令的语法不正确”。它显示“which”不能识别为内部或外部命令,可操作的程序或批处理文件。
${string/%substring/replacement}