如何大写文件名,但不包括扩展名

是否有可能使用rename为大写的文件,但排除其扩展名?

即:我想将文件foo_bar.ext重命名FOO_BAR.ext

我尝试rename 'y/az/AZ/' foo_bar.ext ,但整个文件(包括扩展名)获取大写FOO_BAR.EXT

您正在要求rename[az]所有实例转换为[AZ] 。 相反,将所需的字符串捕获到一个组中并对其进行修改:

 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