可以使用filepath包中的Walk函数来遍历目录及其子目录中的所有文件,然后通过判断目录名是否包含@符号来排除第一级目录,再判断是否为文件来排除所有文件,最后对于剩下的目录,递归调用Walk函数即可获取其所有文件信息。

下面是一个示例代码:

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    root := "/path/to/directory"
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }
        if path == root {
            // skip the root directory
            return nil
        }
        if info.IsDir() {
            // exclude directories with @ in the first level
            dirName := filepath.Base(path)
            if dirName[0] == '@' {
                return filepath.SkipDir
            }
            fmt.Println("Directory:", path)
        } else {
            // exclude all files
            return nil
        }
        return nil
    })
    if err != nil {
        fmt.Println(err)
    }
}

在遍历目录时,如果遇到第一级目录名中包含@符号的目录,则使用filepath.SkipDir来跳过该目录及其子目录的遍历。如果遇到文件,则直接返回nil,跳过该文件的处理。

对于剩下的目录,递归调用Walk函数即可获取其所有文件信息。在处理目录时,可以根据需要进行进一步的操作,比如获取目录中的文件列表、读取文件内容等

golang读取目录只排除第一级目录名中带有符号的目录和所有文件如果有目录接着遍历目录及其文件获取文件所有信息

原文地址: https://www.cveoy.top/t/topic/fsN2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录