go基础库之过滤文件列表

本文将介绍如何列出匹配给定模式的文件路径。该列表不必来自同一文件夹。

过滤文件列表

Golang 版本

1.12.1

前言

本文将介绍如何列出匹配给定模式的文件路径。该列表不必来自同一文件夹。

实现

package main

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

func main() {

	for i := 1; i <= 6; i++ {
		_, err := os.Create(fmt.Sprintf("./test.file%d", i))
		if err != nil {
			fmt.Println(err)
		}
	}

	m, err := filepath.Glob("./test.file[1-3]")
	if err != nil {
		panic(err)
	}

	for _, val := range m {
		fmt.Println(val)
	}

	// Cleanup
	for i := 1; i <= 6; i++ {
		err := os.Remove(fmt.Sprintf("./test.file%d", i))
		if err != nil {
			fmt.Println(err)
		}
	}
}
$ go run main.go
test.file1
test.file2
test.file3

原理

要获取与给定模式对应的过滤文件列表,可以使用filepath包中的Glob函数。 有关模式语法,请参阅filepath.Match函数的文档(https://golang.org/pkg/path/filepath/#Match)。

请注意,filepath.Glob的返回结果是具有匹配路径的字符串切片。