2013-03-15 99 views
0

我是Linux新手,我必須刪除文件名中特定的數字字符串。刪除文件名中出現的兩個字符串之間的字符串

這裏是我的文件名:

AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV 

我需要的輸出:

AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV 

我想刪除123和可5345667或什麼都進來那個位置的其他號碼,所以我想刪除之間的字符串。 (第5次出現)和。 (第6次出現)的文件名。

回答

1

cut可以這樣做:

pax> echo 'AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV' | cut -d. -f1-5,7- 
AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV 

pax> echo 'AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV' | cut -d. -f1-5,7- 
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV 

-d.只是設置分隔符.-f1-5,7-給你,除了第六個各個領域。

+0

感謝您的快速反應,其實我需要重命名所有網絡連接在一個dir中。如果你想重新命名文件,你應該看看'prename'(有時是'rename') - 它是爲了這個目的而設計的,給你充足的空間,你可以幫助我如何使用這個剪切命令 – Naga 2013-03-15 03:46:02

+0

@Naga來重命名文件。正則表達式Perl的重新命名文件。看例如http://stackoverflow.com/questions/12292232/rename-batch-of-file-in-unix/12292263#12292263和http://stackoverflow.com/questions/10138322/script-to-change-basename -with-without-changing-extension-in-linux/10138364#10138364 – paxdiablo 2013-03-15 03:49:10

+0

感謝您的建議,我創建了以下腳本來重命名文件。 #!/ bin/sh for i in'ls -a * .CSV' do echo「$ i」 newFileName = $(echo「$ i」| cut -d。-f1-5,7-) echo $ newFileName mv $ i $ newFileName done – Naga 2013-03-15 04:25:26

0

INPUT.TXT

AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV 

命令

awk -F "." '{ $6=""; print $0 }' Input.txt | sed -e 's/ /\./g' -e 's/\.\./\./g' 

輸出

AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV 
相關問題