我有这种命名模式的文件:
S_1020_E_1293Person_using_PharmacyBasket.csv
S_1298_E_1365Reading instructions.csv
S_1368_E_1691Person_using_Phone.csv
S_136_E_155Other activity.csv
S_157_E_305Reading instructions.csv
S_1693_E_1850Reading instructions.csv
S_1855_E_1887Other activity.csv
S_1905_E_1985Person_making_Tea.csv
S_2125_E_2236Person_making_Tea.csv
S_23_E_135Other activity.csv
S_2901_E_3058Person_using_Phone.csv
S_3060_E_3085Other activity.csv
S_321_E_387Reading instructions.csv
S_3450_E_3470Other activity.csv
S_3473_E_3499Person_watering_Plant.csv
S_3501_E_3582Other activity.csv
S_392_E_418Other activity.csv
我想以一种方式重命名它们,在第二个数字组之后出现下划线字符,例如S_1368_E_1691Person_using_Phone.csv
重命名为S_1368_E_1691_Person_using_Phone.csv
有这样的命令吗?问题是数字的位数是可变的,也是字数。
答案 0 :(得分:2)
您可以使用接受正则表达式的rename
实用程序执行此操作。
rename 's/^(S_\d+_E_\d+)/$1_/' *.csv
这假设您的文件都以“S_digits_E_digits”开头。
答案 1 :(得分:0)
使用perl(在命令行上)和正则表达式来搜索和替换搜索第二个数字组很容易。也许是这样的:
s/^(\D+\d+\D+d+)(.*?)$/\1_\2/