go - 如何将目录结构作为完整的树返回?
问题描述
我有一个这样的目录结构:
reports
├── bar
│ └── 2021-01-25
└── foo
└── 2021-01-25
我是新手,尝试使用 Walk 功能,
现在我有这个代码
func FilePathWalkDir(root string) ([]string, error) {
var files []string
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
if info.IsDir() && info.Name() == "pages" || info.Name() == "data" || info.Name() == "logs" {
return filepath.SkipDir
}
files = append(files, path)
}
return nil
})
return files, err
}
并像这样使用:
func serve(w http.ResponseWriter, r *http.Request) {
lines := []string{}
files, err := FilePathWalkDir("reports/")
if err != nil {
panic(err)
}
for _, file := range files {
lines = append(lines, file)
}
output, err := json.Marshal(lines)
if err != nil {
log.Fatal(err)
}
w.Header().Set("Content-Type", "application/json")
//fmt.Println(string(jsonData))
fmt.Fprintf(w, string(output))
}
我明白了
"reports/"
"reports/bar"
"reports/bar/2021-01-25"
"reports/foo"
"reports/foo/2021-01-25"
但是想要这个:
"reports/bar/2021-01-25"
"reports/foo/2021-01-25"
但我只想返回每个目录的最后一位(reports/foo/2021-01-27) - 带有日期,它可能是许多不同的日期,就像它可能是许多不同的项目名称(foo、bar、barfoo , foobar 等)。
谁能指出我正确的方向?
解决方案
如果您只想要带有日期的路径,为什么不在附加之前使用正则表达式检查后缀是否与该模式匹配?
推荐阅读
- javascript - .eq return all select
- android - Circular dependency between the following tasks while using firebase Crashlytics
- c++ - 在 QtTest 中接收分配 QSharedPointer 的致命错误
- sql - 它说的 SQL 代码在 (MAX(AVG(winRate))) 中不能有聚合函数
- mongodb - 有没有办法使用 mongodump 并指定几个要导出的集合?
- android - 更改 sqlcipher 版本后膨胀类 org.xwalk.core.XWalkView 时出错
- iis - 制定 IIS 重定向规则
- java - ExecutorService.execute() 静默退出 run() 方法
- git - 如何将 ~/.zshrc 文件添加到 git 中?
- php - 错误的推送消息响应状态