2016-07-10 8 views
4

Ich schreibe eine GoLang App mit Go 1.7rc1.filepath.Walk() - Kann ich regeln, auf welchen Verzeichnissen man nicht laufen darf?

Jetzt möchte ich alle Go-Dateien in einem bestimmten Pfad finden. Außerdem möchte ich nicht auf einige Verzeichnisse gehen .. zum Beispiel .. versteckte Verzeichnisse wie .git.

gibt es eine Möglichkeit, Walk() mit einigen Regeln zur Verfügung zu stellen? oder .. Gibt es verschiedene Bibliotheken, die diese Fähigkeiten bieten?

für jetzt dies ist mein Code:

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

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

alle Informationen, um das Problem in Bezug auf sehr geschätzt würde. Vielen Dank!

Antwort

6

Sie können Verzeichnisse überspringen, indem Sie den Fehler filepath.SkipDir von Ihrer Besuchsfunktion zurückgeben.

Hier ist, wie .git Verzeichnisse überspringen:

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