递归获取Linux目录下的文件详情
包含文件名、文件修改时间、文件权限、文件拥有者
func walkDir(filename string) {
var files []local.File
filepath.Walk(filename, func(path string, fi os.FileInfo, err error) error {
depth := strings.Count(path, "/") - strings.Count(filename, "/")
if depth > 1 {
return filepath.SkipDir
}
var file local.File
// 获取文件名
file.Name = fi.Name()
// 获取文件修改时间
file.UpdateTime = fi.ModTime()
// 获取文件权限
file.Auth = fi.Mode().String()
sys := fi.Sys()
if sys != nil {
fileSys, ok := sys.(*syscall.Stat_t)
if ok {
userSys, _ := user.LookupId(fmt.Sprintf("%v", fileSys.Uid))
// 获取文件拥有者
file.User = userSys.Username
}
}
files = append(files, file)
return nil
})
}