指定したディレクトリ配下にあるファイル一覧をスライスで返す。
サブディレクトリがあれば再帰で掘っていく。
main.go
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
)
func main() {
fmt.Println(dirwalk("./test"))
}
func dirwalk(dir string) []string {
files, err := ioutil.ReadDir(dir)
if err != nil {
panic(err)
}
var paths []string
for _, file := range files {
if file.IsDir() {
paths = append(paths, dirwalk(filepath.Join(dir, file.Name()))...)
continue
}
paths = append(paths, filepath.Join(dir, file.Name()))
}
return paths
}
$ ls
main.go test
$ tree test
test
├── file
├── test1
│ ├── file1-1
│ └── file1-2
└── test2
├── file2-1
└── file2-2
2 directories, 5 files
$ go run main.go
[test/file test/test1/file1-1 test/test1/file1-2 test/test2/file2-1 test/test2/file2-2]