2014-11-07 54 views
2

我有一個目錄這樣的文件叫做current_dir:刪除的日期,但保留文件的擴展名

my data-file 2014-10.txt 
data file201409.txt 

,我想

my data-file.txt 
data file.txt 

這裏是我試過

rename 's/ *[0-9]{4}-?[0-9]{2}.*$//' current_dir/*.txt 

但它也刪除了.txt擴展名。

我是linux新手,能幫助我嗎?

+0

.txt擴展名,當我看你的代碼,它煤層您所有的文件都TXT,所以你可以簡單地用你的代碼將其重命名,並重新命名他們再次並添加.txt結束他們 – 2014-11-07 03:34:59

回答

3

重命名只替換匹配的一部分,以便去除正則表達式.*$保持.txt

rename 's/ *[0-9]{4}-?[0-9]{2}//' current_dir/*.txt 

例子

$ rename -n 's/ *[0-9]{4}-?[0-9]{2}//' *.txt 
rename(data file201409.txt, data file.txt) 
rename(my data-file 2014-10.txt, my data-file.txt) 
0

,你可以做到這一點在bash。只有當你確信該日期的部分是在身旁左側

cd $current_dir 
for file in *.txt 
do 
    mv "$file" "${file%%[0-9]*.txt} 
done 
+1

嗯..不會導致'數據文件201409'和'我的數據文件2014-10'? – 2014-11-07 05:47:16