加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

go语言文件正则表达式搜索

发布时间:2020-12-14 01:57:00 所属栏目:百科 来源:网络整理
导读:package mainimport ("fmt""os""path/filepath""regexp")func main() {// 命令行参数args := os.Args// 检查参数if len(args) == 1 {fmt.Println("ff is a file find tool. use like bottom")fmt.Println("ff [dir] [regexp]")return}if len(args) 3 {fmt.Pr
package main

import (
	"fmt"
	"os"
	"path/filepath"
	"regexp"
)

func main() {
	// 命令行参数
	args := os.Args

	// 检查参数
	if len(args) == 1 {
		fmt.Println("ff is a file find tool. use like bottom")
		fmt.Println("ff [dir] [regexp]")
		return
	}

	if len(args) < 3 {
		fmt.Println("args < 3")
		return
	}

	fileName := args[1]
	pattern := args[2]

	file,err := os.Open(fileName)

	if err != nil {
		fmt.Println(err)
		return
	}

	fi,err := file.Stat()

	if err != nil {
		fmt.Println(err)
		return
	}

	if !fi.IsDir() {
		fmt.Println(fileName," is not a dir")
	}

	reg,err := regexp.Compile(pattern)

	if err != nil {
		fmt.Println(err)
		return
	}

	// 遍历目录
	filepath.Walk(fileName,func(path string,f os.FileInfo,err error) error {
			if err != nil {
				fmt.Println(err)
				return err
			}

			if f.IsDir() {
				return nil
			}

			// 匹配目录
			matched := reg.MatchString(f.Name())

			if matched {
				fmt.Println(path)
			}

			return nil
		})

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读