dongmi9494 2019-03-22 12:57
浏览 588
已采纳

如何在Go中查找具有特定扩展名的所有文件,而不论深度如何?

I have a directory structure that looks like this:

/root
  /folder_1
    file_name_1.md
  /folder_2
    file_name_2.md
  /folder_3
    file_name_3.md
  /folder_4
    /sub_folder_1
      file_name_4_1.md
    file_name_4.md

Is there a glob function that I could use to get an array containing the file path of the .md files?

For example:

[
  "/root/folder_1/file_name_1.md",
  "/root/folder_2/file_name_2.md",
  "/root/folder_3/file_name_3.md",
  "/root/folder_4/sub_folder_1/file_name_4_1.md",
  "/root/folder_4/file_name_4.md"
]

Thanks.

  • 写回答

1条回答 默认 最新

  • doushen4719 2019-03-22 13:11
    关注

    The function below will recursively walk through a directory and return the paths to all files whose name matches the given pattern:

    func WalkMatch(root, pattern string) ([]string, error) {
        var matches []string
        err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
            if err != nil {
                return err
            }
            if info.IsDir() {
                return nil
            }
            if matched, err := filepath.Match(pattern, filepath.Base(path)); err != nil {
                return err
            } else if matched {
                matches = append(matches, path)
            }
            return nil
        })
        if err != nil {
            return nil, err
        }
        return matches, nil
    }
    

    Usage:

    files, err := WalkMatch("/root/", "*.md")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。