Функция fs.Glob

Функция fs.Glob выполняет поиск файлов и директорий в файловой системе, соответствующей интерфейсу fs.FS, по заданному шаблону. Первым параметром функция принимает файловую систему fs.FS, вторым параметром - шаблон для поиска. Функция возвращает срез строк с именами найденных файлов и ошибку, если она возникла.

Синтаксис

gofs.Glob(fsys, pattern)

Пример

Давайте выполним поиск всех файлов с расширением .txt в корневой директории:

gopackage main

import (
  "fmt"
  "os"
  "io/fs"
)

func main() {
  fsys := os.DirFS(".")
  res, err := fs.Glob(fsys, "*.txt")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

Результат выполнения кода:

go["file1.txt" "file2.txt" "notes.txt"]

Пример

Давайте выполним поиск всех файлов в поддиректории data с расширением .go:

gopackage main

import (
  "fmt"
  "os"
  "io/fs"
)

func main() {
  fsys := os.DirFS(".")
  res, err := fs.Glob(fsys, "data/*.go")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

Результат выполнения кода:

go["data/main.go" "data/utils.go"]

Пример

Давайте выполним поиск файлов с использованием нескольких шаблонов, используя синтаксис альтернатив:

gopackage main

import (
  "fmt"
  "os"
  "io/fs"
)

func main() {
  fsys := os.DirFS(".")
  res, err := fs.Glob(fsys, "{*.txt,*.md}")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

Результат выполнения кода:

go["file1.txt" "file2.txt" "notes.md" "readme.md"]

Пример

Давайте выполним рекурсивный поиск всех файлов с расширением .log в любом подкаталоге:

gopackage main

import (
  "fmt"
  "os"
  "io/fs"
)

func main() {
  fsys := os.DirFS(".")
  res, err := fs.Glob(fsys, "**/*.log")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

Результат выполнения кода:

go["app.log" "logs/access.log" "logs/error.log" "archive/system.log"]

Смотрите также

  • функцию filepath.Glob,
    которая выполняет поиск по шаблону на уровне операционной системы
  • функцию fs.ReadDir,
    которая читает содержимое директории в файловой системе
  • функцию filepath.WalkDir,
    которая обходит дерево файловой системы с посещением каждой директории
  • функцию filepath.Match,
    которая проверяет соответствие имени файла шаблону