在 Bash 中删除区分大小写的文件扩展名

在 Bash 中删除区分大小写的文件扩展名

我想使用basenameBash 脚本删除文件的后缀。但该命令仅以区分大小写的方式删除后缀。

我如何才能不区分大小写地删除扩展?

答案1

如果要删除 Bash 中的扩展,无需外部工具即可完成此操作。然后,将其传递给basename

$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo

使用混合大小写的扩展名:

$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo

%字符串操作。它将从 后面删除最短的匹配子字符串f.*匹配一个点和零个或多个字符,无论其大小写。

答案2

使用参数扩展

file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}

相关内容