2010年3月2日星期二

linux下类似Windows下的Everything的快速文件名搜索工具mlocate

Everything是我用过的最好的软件工具之一,"快、小、绿色",是我在windows下最留恋的软件。因为有它,我甚至可以不用totalcmd来文件夹切换查找操作了。
可惜的是linux下面并没有如此好用的软件,而locate查找软件的速度我实在不敢恭维,而且还建了那么大的文件索引列表,而索引更新又是如此之慢,令人诟病。
还好,有mlocate稍微缓解我内心的不快,速度比locate和slocate都要快,但还远不及everything,凑活用吧,已经是目前linux下面最差强人意的文件搜索工具了。


mlocate
About

mlocate is a new locate implementation. The 'm' stands for "merging":
updatedb reuses the existing database to avoid rereading most of the file
system, which makes updatedb faster and does not trash the system caches
as much.

The locate(1) utility is intended to be completely compatible to slocate.
It also attempts to be compatible to GNU locate, when it does not conflict
with slocate compatibility.
Availability

mlocate tarballs are available at fedorahosted.org.

Current version: 0.22.1

mlocate is also included in Fedora Core 6 and later.
Bugs

Please consider reporting the bug to your distribution's bug tracking
system.

Otherwise, report bugs at https://fedorahosted.org/mlocate/. Bug reports
with patches are especially welcome.
Performance

These measurements were obtained with mlocate-0.12 and slocate-2.7. Each
time, a computer was booted into single-user mode and after one updatedb
run data was collected using slabtop and free. The measurement method is
admittedly crude, but I think the numbers represent reality quite well.
Run: real user system dentry inode buffers cached
slocate 1m32.84 0.704 2.045 134337 170778 85972 8268
mlocate, 1st 1m11.65 0.214 0.908 17766 15642 78452 21340
mlocate, 2nd 37.64 0.105 0.289 17776 15639 33996 21336

real, user, system
as reported by time
dentry, inode
number of active objects in dentrycache and ext3inode_cache, as reported
by slabtop
buffers, cached
size of disk buffers and page cache, as reported by free


mlocate has two rows because the first run needs to scan the whole file
system, while the subsequent runs can reuse most of the original database.