![bfdce8d3d92dc3284987a51b38a46615.png](https://img-blog.csdnimg.cn/img_convert/bfdce8d3d92dc3284987a51b38a46615.png)
对于上了年纪,有丢三落四的我,找我存放在电脑各个位置的文件一直是很痛苦的事。过去我都是用常规的find命令去找文件,然后ack找内容,直到我发现了这两个工具(fzf/ag),大大提升了我的工作效率。
这两个工具都支持Mac/Linux/Win, 我就Mac展开讨论,其他平台可以访问工具的网站得到。
command-line fuzzy finder (fzf)
开源github上的Go写的工具
可以帮助查询文件,目录,命令历史,进程,主机,git提交历史,书签等。
安装只需要一句话(如果你有brew)
brew install fzf
查找文件
> fzf
然后就会出现当前文件目录下的所有可搜索文件,按字母排序,然后你可以输入字符,进行过滤,我曾经试过几千个文件的目录,速度超快
直接过滤需要的
![5b39bcbe05c418cf4ed7a03737c0251a.gif](https://img-blog.csdnimg.cn/img_convert/5b39bcbe05c418cf4ed7a03737c0251a.gif)
还可以调整格式,支持各种匹配。
过滤模式
fzf 在Mac 上结合其他命令就可以起到过滤器的作用,大概的命令结构是
COMMAND [DIRECTORY/][FUZZY_PATTERN]**<TAB>
![0f94c74a949e802a4db70cb53bf89915.gif](https://img-blog.csdnimg.cn/img_convert/0f94c74a949e802a4db70cb53bf89915.gif)
改变目录
正常情况下,我们要记住一个目录,至少上级目录,然后用cd来切换,用了fzf就不一样了,能不停的过滤你想要的目录,然后去。
cd **
// 然后按 Tab 就能进入fzf 过滤模式
![65fc8aa9cfa0e5a9fc861766bd6e82ba.gif](https://img-blog.csdnimg.cn/img_convert/65fc8aa9cfa0e5a9fc861766bd6e82ba.gif)
注意,当fzf正在索引目录树时,您可以立即开始搜索。 更改目录是我最喜欢的用例,模糊匹配在这里确实很出色。 无论是一级目录还是十级目录,都需要付出同样的努力来更改目录。
进程处理
比如kill 一个进程,我原来的操作:ps -aux/ef 得到进程号 -> kill -9 PID 杀。用了fzf 可以直接在kill中过滤,节省了一步。
![59b3dc616c672fdd31add608c9117ff7.gif](https://img-blog.csdnimg.cn/img_convert/59b3dc616c672fdd31add608c9117ff7.gif)
fzf 后续
fzf提供了太多的功能,比如结合vim,比如过滤格式化,而且因为是开源,还可以在它的基础上二次开发,深入掌握使用,一定能极大的提高我们的工作效率。
AG
同样是开源工具, 解决我一直以来的难点,比如IDE的findAll功能支持所有它index的那些数据,很强大但是有局限,而且IDE在某些情况下太吃内存,机器会比较卡。用了这个工具再也没有烦恼了,直接搜索各个文件内容,而且速度超快。
安装
一样的 homebrew
brew install the_silver_searcher
搜索
直接 ag content
就能搜索目录下所有文件内容
![47e63b38550045d33f1341aaf606873e.png](https://img-blog.csdnimg.cn/img_convert/47e63b38550045d33f1341aaf606873e.png)
能根据目录搜索
![b84d7555289414a0f3bc9ba5ac0342b2.png](https://img-blog.csdnimg.cn/img_convert/b84d7555289414a0f3bc9ba5ac0342b2.png)
能统计搜索数量
![5ee55ce3ab9b8c09b5ae19b935fe9a89.png](https://img-blog.csdnimg.cn/img_convert/5ee55ce3ab9b8c09b5ae19b935fe9a89.png)
还能搜索统计+数据
![ab31f9c698a5d2f633b0594d1add9f1c.png](https://img-blog.csdnimg.cn/img_convert/ab31f9c698a5d2f633b0594d1add9f1c.png)
其他支持的option,包括 -a, 查询所有类型,-u 查询所有文件包括隐藏文件
更多可以用 man ag
查询完整的手册。
总结
这两个命令对我的帮助都很大,几乎每天都用到,希望能有更多的人能发现它。
个人博客: https://patrickchen.cn/
个人公众号:
http://weixin.qq.com/r/ykxMVL-EP_JArfs39xnY (二维码自动识别)