6

Я хочу удалить суффикс файла, используя basename в скрипте Bash. Команда удаляет суффикс только с учетом регистра.

Как я могу удалить расширение без учета регистра?

2 ответа2

13

Если вы хотите удалить расширение в 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 . .* Соответствует точке и нулю или более символов, независимо от их регистра.

3

Используйте расширение параметра

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .