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

时间:2013-12-17 05:06:24

标签: linux rename file-rename

是否可以使用rename大写文件但排除其扩展名?

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

我尝试使用rename 'y/a-z/A-Z/' foo_bar.ext,但整个文件(包括扩展名)获得大写 FOO_BAR.EXT

1 个答案:

答案 0 :(得分: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