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}