@jajabin

Как получить абсолютные пути к файлам в диапазоне директорий?

Реализовал парсер логов на GO, в данный момент программа принимает параметр пути в таком формате пример /var/log/2019/2019-05/2019-05-27/ , парсит лишь текущую папку и возвращает полные пути к файлам, хотелось бы узнать,а как реализовать парсер путей к файлам в таком в виде как --datastart /var/log/2019/2019-05/2019-05-01/ --dataend /var/log/2019/2019-05/2019-05-31/ , для того чтобы парсить определённый диапазон дат, которые разбиты по папкам.
Моя функция реализации первого варианта :
func WalkFile(done <- chan struct{},root string)(<-chan string,<-chan error){

	paths := make(chan string)
	errc  := make(chan error,1)

	go func() {

		defer close(paths)
		errc <- filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
			if err != nil{
				return err
			}
			if !info.Mode().IsRegular(){
				return nil

			}

			select {
			case paths <- path:
			case <-done:
				return nil

				
			}
			return nil
		})

	}()

	return paths,errc
}
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 2
@rustler2000
погромист сикраш
За вас никто путь парсить и фильтровать не будет. Это ваша логика.
Но рекурсивно обходить мешает - https://github.com/golang/go/issues/11862.
Там же рекомендуют https://github.com/bmatcuk/doublestar - сам использую. Либо ручная рекурсия.
Ответ написан
Комментировать
yellow79
@yellow79
Senior Software Engineer
Как вариант можно передавать не флагом, а аргументами передать список, что-то типа
/opt/application /var/log/2019/2019-05/2019-05-*
Linux самостоятельно найдёт всё, что удовлетворяет условиям и передаст в ваше приложение
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы