Go语言扫描硬盘查找自己需要的文件

1 minute read

用到的包

regexp os string strconv

扫描路径函数

 1func getFilelist(path string,re string){
 2	err:=filepath.Walk(path,func (path string,f os.FileInfo,err error) error {
 3		if (f==nil){return err}
 4		if f.IsDir(){return nil}
 5		fmt.Println(path)
 6		//正则匹配路径名和需要查找的文件名
 7		ok,_:=regexp.MatchString(re,path)
 8		if ok{
 9				list=append(list,path)
10		}
11		WriteFile(list)
12		//for k,v:=range list{
13		//	fmt.Println(k,"==> 查找路径:",v)
14		//}
15		return nil
16	})
17	if err!=nil{
18		fmt.Printf("filepath.Walk() returned %v\n",err)
19	}
20}

写入文件保存

 1func WriteFile(file []string){
 2	//保存文件名
 3	filename:="./output.txt"
 4	//判断文件是否存在,存在即删除
 5	_,err := os.Stat(filename)
 6	if err == nil{
 7		os.Remove(filename)
 8	}
 9	//打开此文件
10	fd,_:=os.OpenFile(filename,os.O_RDWR|os.O_CREATE|os.O_APPEND,0644)
11	//循环值并且转换类型
12	for k,v:=range file{
13		content:=strings.Join([]string{strconv.Itoa(k),"==> 查找路径:",v,"\n"},"")
14		buf:=[]byte(content)
15		fd.Write(buf)
16	}
17	defer fd.Close()
18}

入口函数

flag包详解

1func main(){
2	flag.Parse()
3	root,re:=flag.Arg(0),flag.Arg(1)
4	getFilelist(root,re)
5}