
Я хочу удалить суффикс файла, используя 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]}