使用脚本更改多个文件名并使用以前的名称

使用脚本更改多个文件名并使用以前的名称

我想使用脚本将多个文件名更改为原来的名称,例如按如下方式更改文件名:

2015-08-25___LSA_SP_E_txt ---> 20150825.IT.SPE.LSA.txt 
2015-08-25___HSB_BH_Z_txt ---> 20150825.IT.BHZ.HSB.txt 
2015-08-25___TEH_SP_N_txt ---> 20150825.IT.SPN.TEH.txt 
2015-08-25___ANJ_BH_E_txt ---> 20150825.IT.BHE.ANJ.txt 

答案1

一种方法是rename

rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *

-nono 模式下,这只会打印更改,删除此标志以执行重命名。第一个表达式只是删除每个连字符,第二个表达式保存字符串并替换下划线部分。

另一种方法是保存一切您需要分组,这样您还可以快速更改日期:

rename -n 's/(\d*)-(\d*)-(\d*)___(\w*)_(\w*)_(\w*)_/$1$2$3.IT.$5$6.$4./' *

示例运行

$ rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *
rename(2015-08-25___ANJ_BH_E_txt, 20150825.IT.BHE.ANJ.txt)
rename(2015-08-25___HSB_BH_Z_txt, 20150825.IT.BHZ.HSB.txt)
rename(2015-08-25___LSA_SP_E_txt, 20150825.IT.SPE.LSA.txt)
rename(2015-08-25___TEH_SP_N_txt, 20150825.IT.SPN.TEH.txt)

答案2

Bash 脚本(script.sh)用于重命名多个文件。

#!/bin/bash
INPUT="$1"
IFS=,
[ ! -f "$INPUT" ] && { echo "$INPUT file not found"; exit 99; }
while read old_name new_name
do
rename "$old_name" "$new_name" # mv or rename
done < "$INPUT"

Input.txt文件格式:

old_name1.txt,new_name1.txt
old_name2.txt,new_name2.txt

使用:

bash script.sh input.txt

相关内容