Функция fs.Glob
Функция fs.Glob выполняет поиск файлов и директорий
в файловой системе, соответствующей интерфейсу fs.FS,
по заданному шаблону. Первым параметром функция принимает
файловую систему fs.FS, вторым параметром -
шаблон для поиска. Функция возвращает срез строк с именами
найденных файлов и ошибку, если она возникла.
Синтаксис
fs.Glob(fsys, pattern)
Пример
Давайте выполним поиск всех файлов с расширением .txt
в корневой директории:
package 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)
}
Результат выполнения кода:
["file1.txt" "file2.txt" "notes.txt"]
Пример
Давайте выполним поиск всех файлов в поддиректории data
с расширением .go:
package 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)
}
Результат выполнения кода:
["data/main.go" "data/utils.go"]
Пример
Давайте выполним поиск файлов с использованием нескольких шаблонов, используя синтаксис альтернатив:
package 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)
}
Результат выполнения кода:
["file1.txt" "file2.txt" "notes.md" "readme.md"]
Пример
Давайте выполним рекурсивный поиск всех файлов
с расширением .log в любом подкаталоге:
package 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)
}
Результат выполнения кода:
["app.log" "logs/access.log" "logs/error.log" "archive/system.log"]
Смотрите также
-
функцию
filepath.Glob,
которая выполняет поиск по шаблону на уровне операционной системы -
функцию
fs.ReadDir,
которая читает содержимое директории в файловой системе -
функцию
filepath.WalkDir,
которая обходит дерево файловой системы с посещением каждой директории -
функцию
filepath.Match,
которая проверяет соответствие имени файла шаблону