Golang Glob的行为方式没有达到我的预期。假设我有一个具有以下结构的目录“foo”:
foo
|-- 1.txt
|-- 2.csv
|-- 3.json
|-- bar
`-- baz
我想做一个glob,只获取foo中的目录“bar”和“baz”。所以我试试这个:
path = "foo/*/"
matches, err := filepath.Glob(path)
if err != nil {
log.Fatal(err)
}
fmt.Println(matches)
这不会生成匹配项:
[]
如果我删除最后一个尾部斜杠并将路径更改为 ,我会同时获得文件和目录,这不是我想要的结果:"foo/*"
[foo/1.txt foo/2.csv foo/3.json foo/bar foo/baz]
我预计如果存在尾部斜杠,Glob 将仅返回与 glob 模式匹配的目录。我看到GitHub上注意到了同样的问题,但看不到任何解决方法 - 这听起来像是一个错误,一个文档拙劣的功能,或者只是缺乏预期的功能。
我已经检查了Go文档中的Match函数,Glob使用,它没有提到任何关于尾部斜杠的内容。
所以基本上:有没有一个解决方法,以便我可以使用Glob只用Glob在某个路径下的目录,或者我是否需要使用另一种方法来完成这个任务?
米脂
相关分类