linux下有两个常用的查找工具locatefind
locate基于数据库查找,模糊查找。由于数据库一般定时更新,所以对于还没来得及查找的内容,locate不能查找的到。但是他的-e 选项可以实现更新查找,当然效率较低
find是实时查找,精确查找。
updatedb命令可以重新生成数据库,更新的内容可以在/etc/updatedb.conf 中定义
locate的几个有用的选项:-i 忽略大小写;-n 显示前几个匹配 -n 10 只显示前十个匹配到的;-e      exist存在查找;-r 选项还支持基本正则表达式,
 locate –r  “\<issue\>”
除此之外—regex 还支持扩展正则表达式
如:locate –regex “\<issue \| passwd\>”
find是比locate更强大的查找工具,可以再指定的目录下作精确的查找,find的语法如下:
 find options path conditions action
在省略条件时find会把所有项目查找出来然,如果只是这样也还算一般,而find的强大不仅在于他可以查找,而在于他还可以对查找的对象执行相应的命令操作。如ls,通过-exec选项可以直接执行命令,-ok选项也可以执行命令,而且-ok选项还是交互式的执行命令。
你还可以通过管道 | xargs options】来执行更多的操作。要注意的是-ok-exec后的命令
要以  \ 结尾   还可以使用{}占位符可以用来代表每一个find到的文件,相当于反向引用。
下面再介绍几个非常有用的find选项
-name-user-nouser-group-nogroup-perm-uid-gid-type-size
-name  很显然就是按文件的名字查找,而且这是会严格区分大小写的,如果想要忽略大小写查找文件可以使用-iname,还有一个-lname,这个是查找链接文件的。需要注意的是文件名中有空格时需要使用引号把空格括起来,有通配符时也要把整个文件引起来。
-user  顾名思义就是根据文件的属主查找,但是-nouser 却是要查找没有属主的文件
-group 当然是根据文件属组查找,而-nogroup也就是查找没有属组的文件了。或许你会很疑惑,如果有这么多的条件,可不可以一起使用呢,当然可以,默认情况下多个条件罗列是与关系,find支持逻辑关系与-a、或-o、非 –not和!这三者的优先级是   >>  举个例子:如果想要查找/etc下的 既不属于root用户也不是passwd的文件,就可以用 find /etc/ -not –user root –a –not –name “passwd”
也可以使用 find /etc/ -not \( -user root –o –name “*passwd*’\)
其实要记住的是德摩根定律!(a&&b= a || b    !(a|| b= a&&b
文件还可以根据权限查找-perm而权限查找有三种模式:
-perm mode           精确匹配权限
-perm /mode          文件权限模型中三类用户只要有一个权限位包含对应位上的权限就可以
-perm –mode         三类用户都至少要有一位能匹配到要查找到权限就可以查到。
需要注意的是,当匹配位含有0时,此位不用检查。
find查找文件的方法多种多样,我们还可以按文件的uidgid号查找,按文件类型搜索-type
find ,/ -type d 按文件目录搜索。 -size按文件大小查找。需要注意的是再按文件大小查找时,文件大小的单位 b 512bit cbyte字节、KKb  M MbG gb
 如在当前目录下查找大小为2M的文件就可以用   find ./ size 2M  
此外还可以使用+ 和— 来表示大于小于指定大小的文件,单位很重要,指的是查找的最小单位所有小于此单位的文件都被视为最小的值。
虽然很琐碎,但这也正是find强大的体现,还有一些也较为常用的find选项如按存取时间查找-atime文件最后一次被读取时间(按天) -mtime文件数据最后一次被读取(按天)、-ctime文件数据或元数据最后一次改变时间(按天)。如果你认为按天计算这个时间太长,你还可以对应的使用-amin-mmin-cmin按照分钟匹配搜索。甚至你还可以使用-newer-older选项来查找。
记住:文件的元数据包含所有的时间戳,都可以使用stat 命令来手工查看。