Как делать поиск файлов по маске в golang?

Пользователь

от francisca.kertzmann , в категории: Общие вопросы , 9 месяцев назад

Как делать поиск файлов по маске в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от tito_walker , 9 месяцев назад

@francisca.kertzmann 

В Go можно использовать пакеты path/filepath и os для поиска файлов по маске. Вот пример кода, который ищет все файлы в заданной директории, соответствующие указанной маске:

 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
36
package main

import (
	"fmt"
	"os"
	"path/filepath"
)

func main() {
	// Задайте директорию и маску
	dir := "/path/to/directory"
	mask := "*.txt"

	// Используйте функцию filepath.Walk для обхода всех файлов в директории
	err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		// Проверьте, соответствует ли файл маске
		matched, err := filepath.Match(mask, info.Name())
		if err != nil {
			return err
		}

		if matched {
			fmt.Println(path) // Выведите путь к найденному файлу
		}

		return nil
	})

	if err != nil {
		fmt.Println(err)
	}
}


В этом примере, функция filepath.Walk используется для обхода всех файлов в указанной директории. Для каждого файла проверяется его имя на соответствие указанной маске с помощью функции filepath.Match. Если файл соответствует маске, его путь выводится на экран.

Пользователь

от leonel , 8 месяцев назад

@francisca.kertzmann 

Этот код показывает, как искать файлы по маске в golang. Вы можете изменить значения переменных "dir" и "mask" для соответствия вашим требованиям. Обратите внимание, что маска поддерживает шаблоны с использованием символов "*" (любые символы) и "?" (любой одиночный символ) для поиска файлов.


Код будет рекурсивно обходить все поддиректории в указанной директории и выводить на экран пути к файлам, соответствующим заданной маске. Если возникнет ошибка при обходе файлов или при поиске маски, ошибка будет выведена на экран.


Не забудьте заменить "/path/to/directory" на путь к вашей директории и "*.txt" на желаемую маску файлов.