Linux 下使用Recoll实现文件名快速搜索(像windows下的everything)
2013-05-04 19:37
645 查看
everything是windows下的最快速文件名搜索工具.从windows平台转到ubuntu下,很不惯的一点就是没有了everything.
上网搜索了一下,基本的说法是Linux下可以使用find命令搜索文件,但find命令搜索的速度很不快.
搜索速度快的,有mlocate或locate这些等,因为对文件信息建立了数据库,从数据库中搜索,所以速度快,不过是命令行.
everything的搜索方法就像搜索引擎,用空格分隔多个关键词,并且搜索结果是实时显示的(输入马上搜索,不需要按回车),用惯了everything,是不会使用命令行文件搜索工具的.
于是开始找有Gui的搜索工具,找到catfish这个find和locate命令的Gui前端.但是,想好像使用everything那样简单地用空格分隔关键词是不被支持的,输入如"web*"也是不被支持的,"web*pdf"也是不被支持,需要输入"*web*pdf"才行.
不想去了解为什么"web*pdf"不被支持,小结就是勉强能用但绝不好用.
然后找到recoll,一个全文搜索工具.可以使用空格分隔关键词,可以配置为按下空格时进行搜索(半吊子的实时搜索),搜索速度足够快(感觉就像即时显示结果),在搜索栏左边有一个下拉框,可以选择搜索的类型,里面有一个"file name"选项,选中后,可只搜索文件名(因为全文搜索出现的结果十分之多,很难找到自己想找的文件).
基本上达到了everything的使用体验,但有一个问题,recoll默认进行的是全文索引,索引数据库非常大,最坏的情况索引跟原文件的大小相同甚至比原文件还大.我索引了两个自己的资料目录,recoll的数据库就达到了600M.非常不好,我需要的只是搜索文件名.
写到这里开始写本文的正题:在网上找到一篇recoll用户手册的翻译:
[Recoll用戶手冊翻譯,Recoll user manual](http://stupidbeauty.com/Blog/2012/03/recoll%E7%94%A8%E6%88%B6%E6%89%8B%E5%86%8A%E7%BF%BB%E8%AD%AF%EF%BC%8Crecoll-user-manual-2/)
注:访问需代理.
看到recoll有一个配置参数 indexedmimetypes 用于控制对哪些文件建立全文索引,默认此配置值为空,表示对所有能识别的文件建立全文索引.
另外还有一个配置项 indexallfilenames 控制是否总是对文件名建立索引,默认为1,表示总是对文件名建立索引.
所以,只要把 indexedmimetypes 设为一个不存在的文件类型,再让 indexallfilenames 的值为1(默认就是),那么便只会建立文件名索引,不会建立全文索引了.
配置项如下:
indexallfilenames = 1
indexedmimetypes = text/abc
保存到 ~/.recoll/recoll.conf 中,然后删掉recoll已建立的索引数据库(位于 ~/.recoll/xapiandb),并重新建立索引便可.
重新建立索引后,索引数据库大小从之前的600M减少为27M.
实际上,我只使用recoll索引我自己的资料文件夹,而不是索引整个硬盘,因为我最常用的就是搜索自己的资料文件.
如果要在整个硬盘中查找一个文件(比如某个软件的配置文件),还是会使用catfish调用locate进行搜索.
上网搜索了一下,基本的说法是Linux下可以使用find命令搜索文件,但find命令搜索的速度很不快.
搜索速度快的,有mlocate或locate这些等,因为对文件信息建立了数据库,从数据库中搜索,所以速度快,不过是命令行.
everything的搜索方法就像搜索引擎,用空格分隔多个关键词,并且搜索结果是实时显示的(输入马上搜索,不需要按回车),用惯了everything,是不会使用命令行文件搜索工具的.
于是开始找有Gui的搜索工具,找到catfish这个find和locate命令的Gui前端.但是,想好像使用everything那样简单地用空格分隔关键词是不被支持的,输入如"web*"也是不被支持的,"web*pdf"也是不被支持,需要输入"*web*pdf"才行.
不想去了解为什么"web*pdf"不被支持,小结就是勉强能用但绝不好用.
然后找到recoll,一个全文搜索工具.可以使用空格分隔关键词,可以配置为按下空格时进行搜索(半吊子的实时搜索),搜索速度足够快(感觉就像即时显示结果),在搜索栏左边有一个下拉框,可以选择搜索的类型,里面有一个"file name"选项,选中后,可只搜索文件名(因为全文搜索出现的结果十分之多,很难找到自己想找的文件).
基本上达到了everything的使用体验,但有一个问题,recoll默认进行的是全文索引,索引数据库非常大,最坏的情况索引跟原文件的大小相同甚至比原文件还大.我索引了两个自己的资料目录,recoll的数据库就达到了600M.非常不好,我需要的只是搜索文件名.
写到这里开始写本文的正题:在网上找到一篇recoll用户手册的翻译:
[Recoll用戶手冊翻譯,Recoll user manual](http://stupidbeauty.com/Blog/2012/03/recoll%E7%94%A8%E6%88%B6%E6%89%8B%E5%86%8A%E7%BF%BB%E8%AD%AF%EF%BC%8Crecoll-user-manual-2/)
注:访问需代理.
看到recoll有一个配置参数 indexedmimetypes 用于控制对哪些文件建立全文索引,默认此配置值为空,表示对所有能识别的文件建立全文索引.
另外还有一个配置项 indexallfilenames 控制是否总是对文件名建立索引,默认为1,表示总是对文件名建立索引.
所以,只要把 indexedmimetypes 设为一个不存在的文件类型,再让 indexallfilenames 的值为1(默认就是),那么便只会建立文件名索引,不会建立全文索引了.
配置项如下:
indexallfilenames = 1
indexedmimetypes = text/abc
保存到 ~/.recoll/recoll.conf 中,然后删掉recoll已建立的索引数据库(位于 ~/.recoll/xapiandb),并重新建立索引便可.
重新建立索引后,索引数据库大小从之前的600M减少为27M.
实际上,我只使用recoll索引我自己的资料文件夹,而不是索引整个硬盘,因为我最常用的就是搜索自己的资料文件.
如果要在整个硬盘中查找一个文件(比如某个软件的配置文件),还是会使用catfish调用locate进行搜索.
相关文章推荐
- linux下类似Windows下的Everything的快速文件名搜索工具mlocate
- 快速实现配置Windows客户端访问在linux平台上所搭建的Samba服务器&&使用swat软件
- 【管用】 使用VMtools实现主机Windows与虚拟机Linux文件共享
- 使用rsync +cwrsync实现windows和linux的文件同步
- 使用subversion实现虚拟机中linux和windows宿主机代码共享管理
- Linux与Windows中map类erase方法实现的不同决定使用的不同
- Linux 下的类似Windows下Everything的搜索工具
- 文件快速搜索工具-Everything的使用(转)
- 23 使用 cygwin X server实现Linux远程桌面 (for windows)
- 使用SAMBA协议实现Linux与Windows系统之间的文件共享
- C++学习:使用libssh2实现交互式shell的ssh2,linux和windows通用
- 学习在linux和windows安装GSL和使用,编译 链接 和makefile的撰写和实现
- qt使用libvlc库的方法,RTSP播放器的实现(windows、Linux)
- 如何用VC60实现类似windows搜索文件的功能,针对文件夹中包含的文件名进行模糊查
- 使用samba实现linux,windows间文件共享
- 电脑(Linux/Windows)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解)
- 使用cygwin X server实现Linux远程桌面 (for windows)
- Everything:速度最快的文件名搜索工具(Linux版本)
- Java使用libreoffice实现office文件转换成pdf格式,支持windows和linux
- 使用ElasticSearch6.0快速实现全文搜索功能的示例代码