Функция filepath.Glob

Функция filepath.Glob выполняет поиск файлов и директорий, имена которых соответствуют указанному шаблону. Она возвращает срез строк с найденными путями или nil в случае ошибки. В качестве первого параметра функция принимает шаблон для поиска. Поддерживаются стандартные wildcard-символы: * для любой последовательности символов (включая пустую) и ? для одного любого символа.

Синтаксис

gofilepath.Glob(pattern)

Пример

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

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res, err := filepath.Glob("*.txt")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
}

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

go[file1.txt file2.txt data.txt]

Пример

Давайте найдем все файлы, имена которых начинаются с test и имеют любое расширение:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res, err := filepath.Glob("test*.*")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
}

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

go[test.go test.txt test.exe]

Пример

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

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res, err := filepath.Glob("data/*")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
}

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

go[data/config data/logs data/backup]

Пример

Давайте найдем файлы с расширением .go в текущей и всех вложенных директориях. Обратите внимание: filepath.Glob не поддерживает рекурсивный поиск. Для рекурсивного обхода используйте filepath.WalkDir:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res, err := filepath.Glob("*.go")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
}

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

go[main.go helper.go]

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

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