Удалить расширение файла case-insentively in Bash

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

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

26
задан slhck
13.12.2022 9:00 Количество просмотров материала 2467
Распечатать страницу

2 ответа

если вы хотите удалить расширение в bash, вы можете сделать это без внешних инструментов. Затем передайте его basename:

$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo

со смешанным расширением:

$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo

здесь % is строковые манипуляции. Это удалит самую короткую подстроку из того, что находится в f. The .* соответствует точке и нулю или более символов, независимо от их регистра.

13
отвечен slhck 2022-12-14 16:48

использовать разложения по параметру

file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}
3
отвечен choroba 2022-12-14 19:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх