2013-12-17 60 views
2

是否可以使用rename來大寫文件但排除其擴展名?如何大寫文件名但不包括擴展名

即: 我希望將文件重命名foo_bar.extFOO_BAR.ext

rename 'y/a-z/A-Z/' foo_bar.ext試過,但整個文件(包括擴展名)被大寫FOO_BAR.EXT

回答

3

您正在詢問rename將所有[a-z]的實例轉換爲[A-Z]。相反,拍攝所需的字符串轉換成一組,並修改它:

rename 's/([^.]*)/\U$1/' foo_bar.ext 

這將文件foo_bar.ext重命名爲FOO_BAR.ext


如果您有需要被重新命名爲FOO_BAR.BAZ.ext文件foo_bar.baz.ext,用貪婪的匹配和多組。他說:

rename 's/(.*)(\..*)/\U$1\E$2/' foo_bar.baz.ext 

將文件foo_bar.baz.ext重命名爲FOO_BAR.BAZ.ext

+0

我很困惑。爲什麼'重命名'y/a-z/A-Z /'foo_bar.ext'是將文件重命名爲大寫的完美有效方式?從手冊頁「要將大寫字母名稱翻譯爲較低字母,您可以使用''rename'y/A-Z/a-z /'*' – BroSlow

+0

@BroSlow因爲需要保留擴展名的情況。 – devnull

+0

啊,現在我明白了問題的含義,謝謝。 – BroSlow

相關問題