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 !
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 }
J'espère que la réponse suivante correspond à ce que vous recherchez. p>
time
包中的函数 before
和 after
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 }
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!