Как получить базовый путь из пути в сценарии оболочки? - PullRequest
0 голосов
/ 14 марта 2011

Мне нужно было бы найти способ в Bash (оболочка Linux в целом), чтобы получить базовый путь из заданного пути .Есть несколько правил:

  • в указанном пути будет один каталог с именем ABC.
  • , каталог ABC содержит подкаталог, который я не знаюИмя.Ниже я называю это XYZ.

Учитывая этот путь

/some/absolute/path/foo/ABC/XYZ/bar/path/here

результат должен быть:

/some/absolute/path/foo/ABC/XYZ

У меня проблема в том,из-за XYZ, потому что я его не знаю, но нужно сохранить его в возвращаемом пути.

Без неизвестного XYZ Я мог бы сделать это:

pwd | sed -e 's/ABC.*/ABC/'

У кого-нибудь есть решение, как я могу решить это в Bash?Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Если вы хотите сделать это в чистом Bash:

p='/some/absolute/path/foo/ABC/XYZ/bar/path/here'
m=ABC
t=${p##*$m/}          # t=XYZ/bar/path/here
t=${t%%/*}            # t=XYZ
new=${p%$m/*}$m/$t    # new consists of "/some/absolute/path/foo/", "ABC", "/" and "XYZ"
2 голосов
/ 14 марта 2011
sed -r 's,^(.*/ABC/[^/]+).*,\1,'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...