如何获得glob路径的顶部路径?

时间:2015-06-26 10:55:07

标签: go path glob

e.g。

a/b/c* -> a/b
a/b/c*/*/*b -> a/b

为什么我需要这个是因为我想获得globed文件名的abs路径。 代码示例:

files, _ := filepath.Glob(p)
top := __magic here__
for _, f := range files {
    abs, _ := filepath.Abs(path.Join(top, f))
    fmt.Println(abs)
}

是否存在用于此目的的方法?否则我必须自己实施。

修改

神奇的是首先使glob glob path abs,然后是glob返回abs路径。

1 个答案:

答案 0 :(得分:0)

filepath.Glob()返回的文件名已经是绝对的(但请参见下文)。

见这个例子:

fs, err := filepath.Glob("/dev/../dev/*")
if err != nil {
    panic(err)
}
for _, f := range fs {
    fmt.Println(f, filepath.IsAbs(f))
}

输出:

/dev/null true
/dev/random true
/dev/urandom true
/dev/zero true

Go Playground 上试试。

修改

如果glob模式是绝对的,则返回的文件名只是绝对的。所以最简单的方法是使glob模式绝对。