β

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

天地一MADAO的个人空间 84 阅读

文件、目录搜索的小工具

用正则式限制文件名、关键字、目录


开始是专门为了搜索GBK和UTF8两种编码的文件,现在可以制定多种编码方式来搜索文件

本科生,代码可能很不规范

因为windows下好像没有grep,win7默认的搜索用起来也不习惯,search my file也不支持搜索中文,所以开始试着按自己想法尝试写这个东西用来搜源码文件。


做了个很粗陋的GUI,在缺少-f参数时会启动图形界面

https://github.com/wo4li2wang/MSearcher

粗陋的成品

http://dl.vmall.com/c01z8rm42e


参数

  -f  搜索的文件夹,可以用正则式表示
  -k  搜索文件包含的关键字,可以用正则式表示,没有这个参数则根据n参数搜索匹配的文件名
  -n  文件名,可以用正则式表示,如果为空则视为 .(匹配任何文件)
  -s  单独列出名字含有关键字的文件和目录
  -i  忽略正则式的大小写
  -e  限制编码方式,没有这个参数默认同时支持GBK和UTF8(先根据GBK查找,然后用UTF8查找),多个编码用'&'连接

特殊符号

  &  连接多个参数表示存在这些参数中的一个即匹配, 如 -k &haha&hehe 匹配包含 haha 或者包含 hehe 的文件
  |  连接多个参数表示必须存在这些参数, 如 -k |haha|hehe 匹配同时含有haha和hehe的文件,同时出现'&'和'|',以'|'为准
  ^  连接多个参数表示不允许存在的参数, 如 -k &haha&hehe^hoho 匹配包含 haha 或者包含 hehe 但不允许出现 hoho 的文件,出现在-f参数后面如果为路径表示排除路径,为目录名则是排除所有这个名字的目录



注意:
  windows的console 中'&' '|' '^' 要用 '^&' '^|' '^^' 表示
  linux的terminal 中'&' '|' '^' 要用 '&' '|' '^' 表示

关键词 -f -n -k 与 & | ^整合使用


-f 表示目录名

    -f C:\a\&C:\b\                     表示在这两个文件夹下搜索

    -f C:\a\&C:\b\^..理工         表示在这两个文件夹下搜索,跳过名为'XX理工'的文件夹


-n 表示文件名

    -n &.*?\.txt&.*?\.lua            表示搜索文件后缀可以为txt或lua中的一个

    -n ^.*?\.txt^.*?\.lua            表示搜索文件后缀不能为txt或lua,同时出现&和^以 ^优先


-k 表示关键字

    -k &武汉&理工                    表示搜索文件内容包含''武汉和'理工'的文件,出现任意一个关键词即可

    -k |武汉|理工                        表示搜索必须包含''武汉和'理工'的文件,同时出现&和|以 |优先

    -k &武汉&理工^马房山       搜索包含''武汉和'理工',但不许出现'马房山'字样的文件


例子

在testFolder目录下搜索名字由字母组成并带字母后缀的文件
  java -jar MSearcher.jar -f C:\testFolder -n [a-zA-Z]+.[a-zA-Z]+

在testFolder目录下搜索任何包含java(-i不区分大小写)字样的文件
  java -jar MSearcher.jar -f C:\testFolder -k java -i

在testFolder目录下搜索任何包含'理工'字样的文件,只用GBK和GB2312两种编码方式读取文件内容
  java -jar MSearcher.jar -f C:\testFolder -k 理工 -e GBK&GB2312

在testFolder目录下搜索包含'武汉理工大学'字样的文本(默认支持GBK和UTF8),并列出名字包含'武汉理工大学'字样的文件和目录(-s参数)
  java -jar MSearcher.jar -f C:\testFolder -n .
 -k 武汉理工大学 -s

在C:\testFolder和C:\testFolder2两个目录下搜索 txt或者lua 格式的文件 ,包含关键字'武汉理工大学'或者包含'泰晤士报',但不允许出现'空调字样'的文件
  java -jar MSearcher.jar -f C:\testFolder&C:\testFolder2 -n .?.txt&.?.lua -k 武汉理工大学&泰晤士报^空调

注意:
1.空格只是为了看起来明显,解析时参数可以不用空格隔开。
2.关键字(-f -n -k 这些参数后面的搜索内容)中出现 % & | ^ - 这些特殊符号要用 %% %& %| %^ %- 来转义表示
  比如 java -jar MSearcher.jar -f C:\testFolder -n .* -k 武汉理工%&大%^学 表示搜索的关键字为 武汉理工&大^学 
(正在做还没做完)
3.后续想添加 -c 参数,支持在压缩文件(rar、zip、tar.gz)中搜索压缩的文件
4.后续想添加 -u 限制文件的修改时间, -l 限制文件的大小
5.正在做GUI,在没有-f参数的情况下启动gui界面



























作者:天地一MADAO的个人空间
天地一MADAO的博客
原文地址:自己写的 根据编码搜索文件的小工具, 感谢原作者分享。

发表评论