2011-03-14 72 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

相關問題