2
是否可以使用rename
來大寫文件但排除其擴展名?如何大寫文件名但不包括擴展名
即: 我希望將文件重命名foo_bar.ext到FOO_BAR.ext
我rename 'y/a-z/A-Z/' foo_bar.ext
試過,但整個文件(包括擴展名)被大寫FOO_BAR.EXT
是否可以使用rename
來大寫文件但排除其擴展名?如何大寫文件名但不包括擴展名
即: 我希望將文件重命名foo_bar.ext到FOO_BAR.ext
我rename 'y/a-z/A-Z/' foo_bar.ext
試過,但整個文件(包括擴展名)被大寫FOO_BAR.EXT
您正在詢問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
。
我很困惑。爲什麼'重命名'y/a-z/A-Z /'foo_bar.ext'是將文件重命名爲大寫的完美有效方式?從手冊頁「要將大寫字母名稱翻譯爲較低字母,您可以使用''rename'y/A-Z/a-z /'*' – BroSlow
@BroSlow因爲需要保留擴展名的情況。 – devnull
啊,現在我明白了問題的含義,謝謝。 – BroSlow