В данной инструкции показано, как получить список файлов, что соответствуют определенному шаблону. Файлы не обязательно должен быть из той же папки.
Как отфильтровать список файлов по шаблону в Go?
1. Создайте файл filter.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
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) } } // Все файлы которые заканчиваются с расширением .file1, .file2, .file3 m, err := filepath.Glob("test.file[1-3]") if err != nil { panic(err) } for _, val := range m { fmt.Println(val) } // Удаляем временные файлы for i := 1; i <= 6; i++ { err := os.Remove(fmt.Sprintf("./test.file%d", i)) if err != nil { fmt.Println(err) } } } |
2. Запустите код через go run filter.go
в главном терминале;
3. Посмотрите на результат:
Для получения отфильтрованного списка файлов, что соответствует определенному шаблону, можно использовать функцию Glob
из пакета filepath
.
Вывести название всех файлов с расширением .txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import ( "fmt" "path/filepath" ) func main() { m, err := filepath.Glob("*.txt") if err != nil { panic(err) } for _, val := range m { fmt.Println(val) } } |
Результат:
1 2 |
first.txt sites.txt |
Если заменить filepath.Glob("*.txt")
на filepath.Glob("*.png")
, то программа будет искать все изображения с расширением PNG.
Обратите внимание, что возвращаемым результатом от filepath.Glob()
является срез строк с совпадающими с поисковым шаблоном путями к файлам.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»