Bash имя файла без пути

Имена

bash вычленить имя файла из полного пути

Всем привет! Есть текстовый файл, вида:

выглядело бы более наглядно с cat в начале

Больше пайпов!
это делается одним грепом

О человечество! Это прекрасно! Всем огромное спасибо, тему можно считать решённой!

правильно! больше, еще больше велосипедов!

расскажи-ка, чем basename не подошел?

закон топикстартера: из 64 предложеных решений будет скрупулёзно выбрано самое вот такое

Это очень юниксвейно, да, на каждый возможный случай — своя утилита. Вот за это я и ненавижу linux. На самом деле лучший вариант из предложенных. Не надо плодить сущности.

На самом деле, я не знаю, что правильнее выбрать, поэтому выбрал то, что мне проще понять. Попробую варианты с седом и бэйснеймом и решу.

Ле. Человек препологающий, что RoR транслируется в js, что-то считает.

т.е. мне действительно интересно

я бы набыдлокодил grep path file | xargs basename

сомневаюсь, что он осилит ответить, потому вот:

Это очень юниксвейно, да, на каждый возможный случай — своя утилита. Вот за это я и ненавижу linux.

а я ненавижу из-за таких как ты пионеров, которые велосипеды придумывают типа sed ‘s|.*/\([^/]*\)$|\1|’

Это очень юниксвейно, да, на каждый возможный случай — своя утилита.

Так чё сидишь. Иди проси, чтобы в МС Офис добавили кнопку для определения имени файла. «Один комбайн, чтобы править всеми!»

Ага, а рядом приписывать: «# extracts basename from path»

Источник

Извлечь базовое имя файла без пути и расширения в bash

Даны такие имена файлов, как эти:

Читайте также:  Популярные женские имена в африке

Я надеюсь получить:

Почему это не работает?

Как правильно это сделать?

9 ответов

Возможно ли получить имя файла без расширения из пути к файлу src. В качестве примера предположим, что файл src-my-file.png-расположен в images/my-file.png. В моей задаче у меня есть это на данный момент: var processName = options.processName || function (name) < return name; >; var filename =.

Как я могу получить только имя файла без расширения и без пути? Следующее не дает мне никакого расширения, но у меня все еще есть прикрепленный путь: source_file_filename_no_ext=$

Команда basename имеет два различных вызова; в одном случае вы указываете только путь, и в этом случае она дает вам последний компонент, а в другом вы также даете суффикс, который она удалит. Таким образом, вы можете упростить свой пример кода, используя второй вызов basename. Кроме того, будьте осторожны, чтобы правильно цитировать вещи:

Было бы интересно, если бы это решение требовало меньшей арифметической мощности, чем расширение параметра Bash.

Как получить имя файла без расширения из пути в Python?

Примечание: параметр bash extglob должен быть «on», ( Ubuntu устанавливает extglob «on» по умолчанию), если это не так, сделайте:

Соответствующие man bash фоне:

Я нуждался в этом, так же как просили бонгбанг и w4etwetewtwet.

Это будет учитывать разделители обратной косой черты при использовании BaSH на Windows.

Просто альтернатива, которую я придумал, чтобы извлечь расширение, используя сообщения в этой теме с моей собственной небольшой базой знаний, которая была мне более знакома.

Примечание: пожалуйста, посоветуйте мне использовать цитаты; это сработало для меня, но я могу упустить что-то в их правильном использовании (я, вероятно, использую слишком много).

Используйте команду basename. Его manpage находится здесь: http://unixhelp.ed.ac.uk/CGI/man-cgi?базовое имя

Читайте также:  Сонник написать свое имя

Похожие вопросы:

Для преобразования AccountView XML входных файлов в XML Auditfile Afrekensystemen (кассовые аппараты) мне нужно сгенерировать имя выходного файла без пути. Запрос такой:: select f.file_path.

Возможно ли получить имя файла без расширения из пути к файлу src. В качестве примера предположим, что файл src-my-file.png-расположен в images/my-file.png. В моей задаче у меня есть это на данный.

Как я могу получить только имя файла без расширения и без пути? Следующее не дает мне никакого расширения, но у меня все еще есть прикрепленный путь: source_file_filename_no_ext=$

Как получить имя файла без расширения из пути в Python?

У меня есть длинный путь к файлу, например /path/to/file/dir1/dir2/file.txt.gz Я заинтересован в получении имени файла без последнего расширения (т. е. file.txt ) и имени родительского каталога (.

Источник

Извлечь имя файла и расширение в Bash

Я хочу, чтобы получить имя файла (без расширения) и расширение отдельно.

лучшее решение я нашел до сих пор:

это можно легко сделать в Python с

но я бы предпочел не запускать Python переводчик только для этого, если возможно.

30 ответов

во-первых, получить имя файла без пути:

кроме того, вы можете сосредоточиться на последнем » / «пути вместо». который должен работать даже если у вас есть непредсказуемо расширениями:

дополнительные сведения см. В разделе расширение параметров оболочки в руководстве Bash.

обычно вы уже знаете расширение, поэтому вы можете использовать:

вы можете использовать магию переменных POSIX:

(вы можете обойти это с помощью временной переменной:

этой сайт больше объясняет.

это не работает, если файл не имеет расширения или имени файла. Вот что я использую; он использует только встроенные имена и обрабатывает больше (но не все) патологические имена файлов.

Читайте также:  Имя хадижа что обозначает

и вот некоторые тестовые примеры:

это должно делать то, что вы хотите:

отлично работает, поэтому вы можете просто использовать:

команды, кстати, работают следующим образом.

команда NAME заменяет a «.» символ, за которым следует любое число «.» символы до конца строки, без ничего (т. е. он удаляет все из final «.» до конца строки включительно). Это в основном не жадная подстановка с использованием обмана regex.

команда EXTENSION заменители a любое количество символов, за которыми следует «.» символ в начале строки, без ничего (т. е. он удаляет все от начала строки до конечной точки, включительно). Это жадная подстановка, которая является действием по умолчанию.

Меллен пишет в комментарии к сообщению в блоге:

можно использовать cut команда для удаления последних двух расширений ( «.tar.gz» часть):

как отметил Клейтон Хьюз в комментарии, это не будет работать на конкретном примере в вопросе. Поэтому в качестве альтернативы я предлагаю использовать sed с расширенными регулярными выражениями, например:

он работает, удаляя последние два (альфа-числовые) расширения безоговорочно.

[Обновлено снова после комментария от Андерса Линдаля]

Эталонной Реализации

Реализация Bash

почитание ведущих периодов

игнорирование ведущих периодов

тесты

вот тестовые примеры для игнорирование ведущих периодов реализация, которая должна соответствовать ссылочной реализации Python на каждом входе.

вот некоторые альтернативные предложения (в основном в awk ), включая некоторые расширенные варианты использования, такие как извлечение номеров версий для пакетов программного обеспечения.

все варианты использования, используя исходный полный путь в качестве входных данных, вне зависимости от промежуточных результатов.

[Пересмотрено с однострочного до общего bash функции поведение сейчас соответствует dirname и basename служебные программы; обоснование добавил.]

на принято отвечать работает в типичный делам, а не в edge делам, а именно:

тестовый код, который выполняет функции:

Источник

Оцените статью
Имя, Названия, Аббревиатуры, Сокращения
Добавить комментарий

Adblock
detector