Удалить расширение файла без учета регистра в Bash

Удалить расширение файла без учета регистра в Bash

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

Связанный контент