package pkg import "regexp" //import "log" type ( File struct { Owner string `json:"owner"` Group string `json:"group"` Links string `json:"links"` Size string `json:"size_kb"` ModifiedDate string `json:"last_modified"` Filename string `json:"filename"` FileType string `json:"file_type"` OwnerPermission string `json:"owner_permissions"` GroupPermission string `json:"group_permissions"` OtherPermission string `json:"other_permissions"` } ) func ParseDirectoryList(s string) (fl []File) { fileType := map[string]string{ "b": "block", "c": "character", "d": "directory", "l": "symbolic_link", "s": "socket_link", "p": "fifo", "-": "file", } for _, i := range regexp.MustCompile(`(?i)([-dclspb])([-rwx]{3})([-rwx]{3})([-rwx]{3})(?:\.)?\s+(\d+)\s+(\w+)\s+(\w+)\s+(\d+)\s+(\S+\s+\d+\s+\S+|\S+\s+\S+)\s+(\S+)`).FindAllStringSubmatch(s, -1) { fl = append(fl, File{ FileType: fileType[i[1]], OwnerPermission: i[2], GroupPermission: i[3], OtherPermission: i[4], Links: i[5], Owner: i[6], Group: i[7], Size: i[8], ModifiedDate: i[9], Filename: i[10], }) } return }