【问题标题】:How to get base path from path in shell script?如何从 shell 脚本中的路径获取基本路径?
【发布时间】:2011-07-15 01:23:56
【问题描述】:

我需要在 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 中解决这个问题?谢谢!

【问题讨论】:

    标签: regex bash string path


    【解决方案1】:
    sed -r 's,^(.*/ABC/[^/]+).*,\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"
    

    【讨论】:

    • 谢谢丹尼斯!很高兴知道。 +1
    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 2015-10-07
    • 2011-08-16
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多