filepath.Walk() - 我可以提供哪些目录不要走的规则?

时间:2016-07-10 16:46:18

标签: go directory

我正在使用Go 1.7rc1编写GoLang应用程序。

现在我想找到特定路径中的所有go文件。除此之外,我不想走一些目录..例如..隐藏目录,如.git

有没有办法为Walk()提供一些规则?或..是否有不同的库提供这些功能?

现在这是我的代码:

func visit(path string, f os.FileInfo, err error) error {
    fmt.Printf("Visited: %s\n", path)
    return nil
}

func main() {
    filepath.Walk(path,visit)
}

非常感谢有关该问题的任何信息。谢谢!

1 个答案:

答案 0 :(得分:9)

您可以通过从访问函数返回错误filepath.SkipDir来跳过目录。

这里是如何跳过.git目录:

func visit(path string, f os.FileInfo, err error) error {
    if f.IsDir() && f.Name() == ".git" {
        return filepath.SkipDir
    }
    fmt.Printf("Visited: %s\n", path)
    return nil
}

需要测试f.IsDir()以避免跳过包含名为" .git"的普通文件的目录的其余部分。