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