получить подстроку в сценарии оболочки - PullRequest
4 голосов
/ 30 июля 2009

если у меня есть строка типа some/unknown/amount/of/sub/folder/file.txt как я могу получить только подстроку file.txt, удалите переднюю часть, в то время как длина неизвестна .

спасибо

РЕДАКТИРОВАТЬ: имя файла может быть любой длины, а подпапки могут быть любого уровня.

Ответы [ 4 ]

13 голосов
/ 30 июля 2009
$ basename "some/unknown/amount/of/sub/folder/file.txt"
file.txt

Для общего извлечения подстроки вы можете использовать этот синтаксис

$ hello="abcdef"
$ echo ${hello:1:3}
bcd
5 голосов
/ 31 июля 2009

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

bash-3.2$ t=/this/is/a/path
bash-3.2$ echo ${t##*/}
path
4 голосов
/ 30 июля 2009

базовое имя какое-то / неизвестно / сумма / из / sub / folder / file.txt

4 голосов
/ 30 июля 2009

Команда basename:

orig_path="some/unknown/amount/of/sub/folder/file.txt"
last_comp=$(basename $orig_path)
echo $last_comp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...