github.com/jvandenbroek/directory_stat_exporter@v0.2.0/dirstatFileAge.go (about) 1 package main 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "time" 8 ) 9 10 func getModTime(file string) int64 { 11 info, err := os.Stat(file) 12 if err != nil { 13 return time.Now().Unix() 14 } 15 return info.ModTime().Unix() 16 } 17 18 func getOldestFileModTimestamp(dir string, recursive bool) int64 { 19 if recursive { 20 return getOldestAgeInDirRecursively(dir) 21 } else { 22 return getOldestAgeInDir(dir) 23 } 24 } 25 26 func getOldestAgeInDirRecursively(dir string) int64 { 27 var oldestTs int64 = time.Now().Unix() 28 _ = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { 29 if info != nil && !info.IsDir() { 30 ts := getModTime(path) 31 if ts < oldestTs { 32 oldestTs = ts 33 } 34 } 35 return nil 36 }) 37 return oldestTs 38 } 39 40 func getOldestAgeInDir(dir string) int64 { 41 var files, _ = ioutil.ReadDir(dir) 42 var oldestTs int64 = time.Now().Unix() 43 for _, file := range files { 44 if !file.IsDir() { 45 ts := getModTime(dir + string(os.PathSeparator) + file.Name()) 46 if ts < oldestTs { 47 oldestTs = ts 48 } 49 } 50 } 51 return oldestTs 52 }