我想使用basename
Bash 脚本删除文件的后缀。但该命令仅以区分大小写的方式删除后缀。
我如何才能不区分大小写地删除扩展?
答案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]}