是否可以使用rename
大写文件但排除其扩展名?
即: 我想将文件 foo_bar.ext 重命名为 FOO_BAR.ext
我尝试使用rename 'y/a-z/A-Z/' foo_bar.ext
,但整个文件(包括扩展名)获得大写 FOO_BAR.EXT
答案 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
。