Bei unserer täglichen Arbeit müssen wir oft Dateien finden, die in einem bestimmten Datumsbereich erstellt wurden. In GOLANG können wir einige integrierte Funktionen und Bibliotheken verwenden, um diese Funktion zu erreichen. In diesem Artikel stellt der PHP-Editor Xiaoxin vor, wie man mit der Programmiersprache GOLANG die Funktion zum Suchen von Dateien innerhalb eines bestimmten Datumsbereichs implementiert. Ob für die tägliche Arbeit oder für persönliche Projekte, diese Funktion ist sehr praktisch, lassen Sie uns gemeinsam herausfinden!
Ich möchte wissen, wie ich Dateien in einem bestimmten Ordner innerhalb eines bestimmten Datumsbereichs finden kann. Beispiel: Ich möchte alle Dateien im Ordner x finden, die zwischen dem 1. August 2013 und dem 31. August 2013 erstellt wurden.
Ich habe Folgendes versucht:
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 }
Ich hoffe, die folgende Antwort ist das, wonach Sie suchen. p>
time
包中的函数 before
和 after
atime (Zugriffszeit) ist die Dateizugriffszeit
mtime (Änderungszeit) ist die Dateiänderungszeit
ctime (Änderungszeit) ist die Inode- oder Dateiänderungszeit
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 }
Das obige ist der detaillierte Inhalt vonGOLANG – Finden Sie Dateien, die innerhalb eines bestimmten Datumsbereichs erstellt wurden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!