command/ls.go

92 lines
1.9 KiB
Go
Raw Normal View History

2022-05-21 11:35:01 +08:00
// Package command ...
//
// Description : command ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2022-05-20 22:34
package command
import (
"fmt"
"strings"
2022-05-21 18:06:56 +08:00
"git.zhangdeman.cn/zhangdeman/command/define"
2022-05-21 11:35:01 +08:00
)
// NewLs ls命令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:36 2022/5/20
func NewLs(workDir string) *ls {
return &ls{
workDir: workDir,
paramList: []string{"-l"},
}
}
type ls struct {
workDir string
paramList []string
isRecursive bool // 是否递归查询
}
// ShowHideFile 显示隐藏文件
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:38 2022/5/20
func (l *ls) ShowHideFile() *ls {
l.paramList = append(l.paramList, "-a")
return l
}
// Recursive 递归查看所有目录下的文件
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:38 2022/5/20
func (l *ls) Recursive() *ls {
l.paramList = append(l.paramList, "-R")
return l
}
// Run 执行命令
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:59 2022/5/20
2022-05-21 19:57:27 +08:00
func (l *ls) Run() (*define.Result, []define.LsFileInfo) {
2022-05-21 11:35:01 +08:00
result := Execute(l.workDir, "ls", l.paramList)
if nil != result.Error {
return result, make([]define.LsFileInfo, 0)
}
resultStr := string(result.Output)
fileList := strings.Split(resultStr, "\n")
2022-05-21 11:35:01 +08:00
for _, item := range fileList {
if item == "." || item == ".." || len(item) == 0 {
2022-05-21 11:35:01 +08:00
// 忽略 . 和 ..
continue
}
itemArr := strings.Split(item, " ")
if strings.ToLower(itemArr[0]) == "total" {
// 过滤掉对于文件总数的输出
continue
}
l.parseFileInfo(item)
2022-05-21 11:35:01 +08:00
}
return result, nil
}
// parseFileInfo 解析文件信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:35 2022/6/27
func (l *ls) parseFileInfo(fileLine string) *define.LsFileInfo {
fileInfoArr := strings.Split(fileLine, " ")
fmt.Println("文件信息 : ", fileInfoArr)
return nil
}