2015-02-24 60 views
0

我有這樣的命名模式的文件:重命名與不同模式的文件在Linux

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

這很容易用perl(在命令行上)和一個正則表達式來搜索並替換搜索第二個數字組。也許是這樣的:

s/^(\D+\d+\D+d+)(.*?)$/\1_\2/ 
+0

它沒有工作。它不會做任何事情。 – user667222 2015-02-24 17:25:55

+0

這並不是一個全面的答案,我仍然希望你能夠在命令行上使用perl。我只是給你一個很好的提示,讓你開始使用正則表達式來幫助你。這個網站不是關於做你功課的人。 – DavidG 2015-02-24 17:29:11

2

可以使用rename工具,它接受一個正則表達式做到這一點。

rename 's/^(S_\d+_E_\d+)/$1_/' *.csv 

這假定你的文件都是以「S_digits_E_digits」之類的東西開始的。

+0

它沒有做任何事情 – user667222 2015-02-24 16:39:09