linux - 如何将文件名大写但排除扩展名

标签 linux rename file-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

关于linux - 如何将文件名大写但排除扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626311/

相关文章:

linux - rename() 是原子的吗?

php - 重命名上传文件并显示它

javascript - HTML无法在Github Pages中在线链接Css,但在Linux本地无法链接

python - 根据模式搜索重命名多列

c - 简单的ubuntu内核模块make文件错误

amazon-web-services - AWS CDK : How to rename existing stacks without losing the ability to update?

linux - 从文件名中删除日期、逗号和句点

bash - 使用名称模式 *.[a-z0-9].bundle.* 重命名所有文件,以将 [a-z0-9] 替换为给定字符串

c - 如何从内核空间的用户空间指针中正确提取字符串?

python - 无法在 Linux (Ubuntu) 中启动 Jupyter Notebook