2010-05-21 22 views
2

我需要重命名目錄中的所有文件。源文件名的一些例子:更改 - 到。對於目錄中的所有文件

alpha--sometext.381928 
comp--moretext.7294058 

得到的文件將被重命名爲:

alpha.sometext.381928 
comp.moretext.7294058 

之前和之後的字符數 - 是洽。

該腳本需要在當前安裝的Ubuntu和FreeBSD上運行。這些是瘦LAMP服務器,因此只安裝了必要的軟件包。

感謝

回答

4

通過慶典:

for file in *--*; do 
    mv "${file}" "${file/--/.}" 
done 

神奇的是在${file/--/.}這是${file}值除與各 「 - 」 更改爲 「」。

+0

不錯的一個。我試圖寫一篇,但你打敗了我! – Josh 2010-05-21 20:20:34

+0

你應該總是引用任何包含文件名的變量。 'mv「$ {file}」「$ {file/- /。}」' – 2010-05-21 21:03:39

+0

@DennisWilliamson - 我已經更新了我的答案,但確切地說,您需要引用任何可能有空格的東西。 – 2010-05-21 21:54:04

4

作爲純shell的替代方案,您可以使用rename這個Perl自帶的標準實用程序。簡單的情況更方便。

rename 's/--/./' * 
+0

這真的很酷。不知道。 – tangens 2010-05-21 20:40:37

相關問題