Функция filepath.Glob
Функция filepath.Glob выполняет поиск файлов и директорий,
имена которых соответствуют указанному шаблону. Она возвращает
срез строк с найденными путями или nil в случае ошибки.
В качестве первого параметра функция принимает шаблон для поиска.
Поддерживаются стандартные wildcard-символы: * для любой
последовательности символов (включая пустую) и ? для
одного любого символа.
Синтаксис
filepath.Glob(pattern)
Пример
Давайте найдем все файлы с расширением .txt в текущей директории:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res, err := filepath.Glob("*.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
[file1.txt file2.txt data.txt]
Пример
Давайте найдем все файлы, имена которых начинаются с test и имеют любое расширение:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res, err := filepath.Glob("test*.*")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
[test.go test.txt test.exe]
Пример
Давайте найдем все файлы и директории в поддиректории data:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res, err := filepath.Glob("data/*")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
[data/config data/logs data/backup]
Пример
Давайте найдем файлы с расширением .go в текущей и всех вложенных директориях.
Обратите внимание: filepath.Glob не поддерживает рекурсивный поиск.
Для рекурсивного обхода используйте filepath.WalkDir:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res, err := filepath.Glob("*.go")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
[main.go helper.go]
Смотрите также
-
функцию
filepath.WalkDir,
которая выполняет рекурсивный обход директорий -
функцию
filepath.Match,
которая проверяет соответствие строки шаблону -
функцию
filepath.Abs,
которая возвращает абсолютный путь к файлу -
функцию
os.ReadDir,
которая читает содержимое директории без поддержки шаблонов