如何从shell脚本中的路径获取基本路径?

时间:2011-03-14 14:11:14

标签: regex bash string path

我需要在Bash(一般来说是Linux shell)中找到一种方法来从给定路径获取基本路径。有一些规则:

  • 在给定路径中将有一个名为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 个答案:

答案 0 :(得分:2)

sed -r 's,^(.*/ABC/[^/]+).*,\1,'

答案 1 :(得分:2)

如果你想在纯粹的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"
相关问题