在 Bash 中以大小写方式删除文件扩展名

iro*_*and 6 bash file-extension

我想通过basename在 Bash 脚本中使用来删除文件的后缀。该命令仅以区分大小写的方式删除后缀。

如何不区分大小写地删除扩展名?

slh*_*hck 14

如果你想在 Bash 中删除一个扩展,你可以在没有外部工具的情况下做到这一点。然后,将其传递给basename

$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo
Run Code Online (Sandbox Code Playgroud)

使用大小写混合扩展名:

$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo
Run Code Online (Sandbox Code Playgroud)

在这里,%字符串操作。它将从 in 的后面删除最短的匹配子字符串f。在.*不考虑他们的情况的点,并且零个或多个字符匹配。


cho*_*oba 5

使用参数扩展

file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}
Run Code Online (Sandbox Code Playgroud)