2011-03-14 99 views
0

我需要在Bash(一般的Linux shell)中找到一种方法,从给定路径获得基本路径。有几条规则:如何从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
sed -r 's,^(.*/ABC/[^/]+).*,\1,' 
+0

感谢埃里克!正是我需要的。 :) – murrekatt 2011-03-14 14:18:12

2

如果你想这样做纯粹击:

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" 
+0

谢谢丹尼斯!很高兴知道。 +1 – murrekatt 2011-03-14 15:37:36

相关问题