用Go语言写了一个电脑搜索文件的小东西

package main

import (
	"bytes"
	"fmt"
	"os"
	"os/exec"
	"path/filepath"
	"sync"
)

type jieguo struct {
	go_num int
	Lock   sync.Mutex
}

var searchName string = os.Args[1]
var search_result chan string = make(chan string, 1)
var nums chan int = make(chan int, 1)
var x jieguo = jieguo{go_num: 0}

func main() {
	list := []string{"D:","E:","F"}
	for _, i := range list {
		fmt.Println(i, searchName)
		go pan(i)
	}
	for {
		select {
		case x := <-search_result:
			fmt.Println(x)
		case y := <-nums:
			if y == 0 {
				os.Exit(0)
			}
		}
	}
}

func pan(path string) {
	a := exec.Command("ls", path)
	result, e := a.Output()
	if e != nil {
		fmt.Println(e)
	}
	z := bytes.Split(result, []byte{10})
	for _, i := range z[:len(z)-1] {
		s := path + "\\" + string(i)
		fmt.Println(s)
		e = os.Chdir(s)
		if e == nil {
			x.Lock.Lock()
			x.go_num = x.go_num + 1
			x.Lock.Unlock()
			go func() {
				filepath.Walk(s, walk)
				x.Lock.Lock()
				x.go_num = x.go_num - 1
				nums <- x.go_num
				x.Lock.Unlock()
			}()
		} else {
			fmt.Println(e)
			if string(i) == searchName {
				fmt.Println(s)
			}
		}
	}
}

func walk(path string, info os.FileInfo, err error) error {
	if err != nil {
		return err
	}
	if !info.IsDir() && info.Name() == searchName {
		search_result <- path
		return nil
	}
	return nil
}

时间: 2024-10-09 05:28:07

用Go语言写了一个电脑搜索文件的小东西的相关文章

自己写的 根据编码搜索文件的小工具

文件.目录搜索的小工具 用正则式限制文件名.关键字.目录 开始是专门为了搜索GBK和UTF8两种编码的文件,现在可以制定多种编码方式来搜索文件 本科生,代码可能很不规范 因为windows下好像没有grep,win7默认的搜索用起来也不习惯,search my file也不支持搜索中文,所以开始试着按自己想法尝试写这个东西用来搜源码文件. https://github.com/wo4li2wang/MSearcher 参数 ? -f ?搜索的文件夹,可以用正则式表示? -k ?搜索文件包含的关键

不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊

花10天时间用C语言做了个小站 http://tieba.yunxunmi.com/index.html 简称: 云贴吧 不好意思啊.我上周到今天不到10天时间.用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊 估计採集1000万贴,欢迎大家狠狠的来拍吧! 整站大小(网页+C ISAPI类库)不到1MB 容量大.速度快.不管什么贴,随便贴吧,就是量大.容量大.肚量大!

为数据挖掘小组写的一个用于造数据的小程序

最近有个数据挖掘的项目,要求在文本里面写入随机字母并且要1000W个 于是就写了个程序用来造数据并记录一下 程序写的时候遇到的问题 1 未考虑内存溢出的情况,大批量的把数据写入导致内存溢出 以后需要谨慎对待 目前完整版 package test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.apache.commons.io.FileUtils; import org

写了一个常规性生成merge 的小脚本

现在使用数据库来写存储过程,动不动参数就会用到xml ,当然罗,优势也很明显,参数相对固定,而且灵活,如果要修改或者什么的,中间接口层也不需要做变化,只需要修改封装的存储过程以及程序传参就ok了. 随着时间慢慢过,有时候就有一个存储过程,一个xml 来应对整个表的新增,修改,删除的情况了.而对于这个情况,我个人比较喜欢使用 Merge关键字来处理.但是如果表里面的列很多,那么复制黏贴啊之类的机械动作就会很多,而且没有什么价值.所以我就写了一个小脚本,应对了使用xml 来做表的增删改的作用 首先我

一个用 C 语言写的迷你版 2048 游戏,只有 500个字符

Jay Chan 用 C 语言写的一个迷你版 2048 游戏,只有 487 个字符.来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak") );puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i ,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M [w(d,i,j++)],W|=P>>11,l*

一个Java写的批量重命名文件小程序

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣.比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟. import java.io.File; import java.sql.Date; import java.util.Scanner; public class RenameTool { boolean useDefaultName = false; boolean useDefa

用Go语言实现的批量重命名文件工具

今天早上想把文件传到网盘里,而且还想修改把文件名改成文件名的md5,一个一个修改比较麻烦. 最近一直在研究Go语言,该语言比较简洁,可以编译成可执行程序,所以就用Go语言写了一个小工具叫md5ren. 实现的功能是在要修改的文件夹中执行命令md5ren,达到的目标是将该文件夹下所有的文件以及文件夹都修改成原始名称的md5值,如果是文件,则保留原文件的后缀. 使用到的Go语言的功能有: 列出一个文件夹下的所有文件 判断文件类型,是文件还是文件夹 写文件 生成字符串的MD5值 列出一个文件夹下的所有

今天看到一个网站不知道是用什么语言写的

今天看到一个网站不知道是用什么语言写的网站(www.kufangwuyou.com)不知道这是怎么回事一直费解,想换成div+cdd的!

写了一个百度网盘资源搜索程序

一.引言 古语有云:“活到老学到老”.表达出一种“生命不止,学习不止”的学习进取精神,是一种乐观的激励!作为程序员更应该如此,否则就会被淘汰.今天我所要讲的不是如何去学习,而是怎么在网上找到我们所需求的资源. 二.百度网盘搜索方法 找资源的方法有很多,如:百度,谷歌搜索.而我讲的是如何搜索“百度网盘”里面的资源. 具体方法:在搜索引擎中搜索:site:pan.baidu.com 关键词,如下图.亲测必应,谷歌可以. 三.写了一个程序 为了自己搜索方便,索性写了一个程序去爬取必应的搜索结果,如下图