Здравствуйте, подскажите пожалуйста как разделить текст на нейм и формат
Пример: name.tar , name.tar.gz , name.jpg и тп.
Конечное что хочу получать это name и формат отдельно
Название: name, Формат: tar.gz
думаю вам следует уточнить свой вопрос, так как сам linux определяет формат файлов не по расширению(суфиксу) в имени файла, а путём анализа начальных байтов самого файла, то есть файл name.tar.gz может оказаться как архивом так и простым текстовым файлом или даже картинкой.
то есть, есть несколько вариантов решения в зависимости от задачи:
(по возрастанию сложности)
1. разделить имя файла на "корень" и "суфикс" по разделителю точка(.)
1.1 по первой точке в имени
name.jpg --> name jpeg
name.1.jpg --> name 1.jpeg (!!)
1.2 по последней точке в имени
name.1.jpg --> name.1 jpeg
name.tar.gz --> name.tar gz (!!)
2. разделить по окончанию имени в соотвецтвии с имеющемся списком
list_extensions: .jpeg .tar.gz ...
name.tar.gz + list_extensions --> name tar.gz
name.jpg + list_extensions --> name jpeg
3. проверить сначала "реальный" тип файл с помощью утилиты `file` а после уже применить (2) вариант
$ file -b --mime-type name.jpg
image/jpeg
если тип файла не определился то просто вывести полное имя и всё.
если вывелся, например как выше `image/jpeg` то далее уже можно сравнить со своим списком(list_extensions) или даже позаимствовать такой у `CUPS`, при установленной программе он обычно находится по пути `/etc/mime.types`
для нашего случая
Так просто дели по разделителю точке.
с двойными расширениями могут быть проблемы. Зависит от примера файлов.
Если у тебя есть
hello.deman.txt
hello.tar.gz
то как тут разобраться где расширение а где имя?
Ну и где твои собственные попытки?
Думал делать деление по точки но из-за двойных точек будет уже не правильно, по этому думал может есть функция для поиска в тексте части текста по имени если есть то резать и отдельно создавать переменную с форматом
В линуксе нет расширений, это просто часть имени файла.
Пока не придумаете точно работающее правило, которое сработает ко всем ВАШИМ файлам, ничего не получится. Я вам дал пример с основной проблемой.
Если у вас таких файлов нет, просто делите до первой точки - слева имя, справа расширение.
Если есть - соберите инфу. Может быть проще будет выписать все возможные расширения в отдельный массив и по нему работать