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

如何在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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘