Maison > développement back-end > Golang > le corps du texte

GOLANG - Rechercher des fichiers créés dans une certaine plage de dates

WBOY
Libérer: 2024-02-09 22:30:08
avant
1029 Les gens l'ont consulté

GOLANG - 查找在某个日期范围内创建的文件

Dans notre travail quotidien, nous avons souvent besoin de retrouver des fichiers créés dans une certaine plage de dates. Dans GOLANG, nous pouvons utiliser certaines fonctions et bibliothèques intégrées pour réaliser cette fonction. Dans cet article, l'éditeur PHP Xiaoxin expliquera comment utiliser le langage de programmation GOLANG pour implémenter la fonction de recherche de fichiers dans une plage de dates spécifiée. Que ce soit pour le travail quotidien ou des projets personnels, cette fonction est très pratique, découvrons-le ensemble !

Contenu de la question

Je souhaite savoir comment rechercher des fichiers dans un dossier spécifique dans une certaine plage de dates. Par exemple : je souhaite rechercher tous les fichiers du dossier x créés entre le 1er août 2013 et le 31 août 2013.

J'ai essayé ceci :

dir := "path/to/dir"
t, err := time.Parse("2006-01-02T15:04:05-07:00", "2018-04-07T05:48:03+08:00")

if err != nil {
    panic(err)
}

paths, infos, err := FindFilesAfter(dir, t)
if err != nil {
    panic(err)
}

for i, _ := range paths {
    checkFile(paths[i], infos[i])
}

func FindFilesAfter(dir string, t time.Time) (paths []string, infos []os.FileInfo, err error) {
    err = filepath.Walk(dir, func(p string, i os.FileInfo, e error) error {
        if e != nil {
            return e
        }

        if !i.IsDir() && i.ModTime().After(t) {
            paths = append(paths, p)
            infos = append(infos, i)
        }
        return nil
    })
    return
}
Copier après la connexion

Solution

J'espère que la réponse suivante correspond à ce que vous recherchez.

  • Si votre question concerne davantage la plage horaire, vous pouvez utiliser time 包中的函数 beforeafter
  • Si votre question concerne davantage la recherche de l'heure de création que l'heure de modification. Vous pourriez envisager d'utiliser le package syscall pour trouver atime, mtime et ctime - ce sont essentiellement :

atime (temps d'accès) est le temps d'accès au fichier

mtime (heure de modification) est l'heure de modification du fichier

ctime (heure de changement) est l'heure de changement d'inode ou de fichier

package main

import (
    "io/fs"
    "log"
    "os"
    "syscall"
    "time"
)

func main() {
    // prepare data
    start, _ := time.Parse(time.RFC3339, "2022-11-26T07:04:05Z")
    end, _ := time.Parse(time.RFC3339, "2022-11-26T08:10:00Z")
    var dir = "your path"

    files := FindFilesByDateRange(dir, start, end)

    // print result
    log.Printf("file range: %s-%s\n", start.Format(time.RFC3339), end.Format(time.RFC3339))
    for _, f := range files {
        log.Println(f.Name())
    }

}

func FindFilesByDateRange(dir string, start, end time.Time) []fs.FileInfo {
    fileSystem := os.DirFS(dir)
    var files []fs.FileInfo
    if err := fs.WalkDir(fileSystem, ".", func(path string, d fs.DirEntry, err error) error {
        if err != nil {
            log.Fatal(err)
        }
        fileInfo, err := d.Info()
        if err != nil {
            return err
        }
        stat := fileInfo.Sys().(*syscall.Stat_t)
        cDate := time.Unix(stat.Ctimespec.Sec, stat.Ctimespec.Nsec).UTC()
        if !d.IsDir() && (cDate.After(start) && cDate.Before(end)) {
            files = append(files, fileInfo)
        }
        return nil
    }); err != nil {
        return nil
    }
    return files
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal