搜索文件用处很大,我们往往需要知道一个文件存放在什么地方,我们又知道Linux是命令强大的一个系统,所以也有好多非常优秀的搜索命令。通常find不常用,因为速度慢,耗费硬盘空间。通常我们先使用whereis或是locate来检查,如果真的找不到了,才以find来搜索。为什么呢?因为whereis locate是使用数据库来搜索数据,所以相当快,而且并没有是几搜索硬盘,比较省时。
1.which(寻找“执行文件”),which 后面跟可执行文件名 如果在最后加上-a,则可以找到所有同名执行文件,而非只显示一个。这个命令是根据“PATH”环境变量所规范的路径,来搜索“执行文件”的文件名,所以重点是找出“执行文件”。
2.whereis(寻找特定文件)
为什么whereis会比find搜索速度快呢?是因为Linux系统会将系统内的所有文件都记录在一个数据库文件里,当使用whereis或者是locate时,都会以此数据库的内容为准,因此,有时,您还会发现,使用这两个执行文件时,会找到已删除的文件,而且也找不到刚刚建立的最新文件。这就是因为这两个命令是通过数据库中的结果去搜索文件。Linux每天会针对Linux主机上所有文件的位置,进行搜索数据库的更新,更新的程序就是updatedb.
3.locate的使用更简单,直接在后面输入“文件的部分名称”后,就能够得到结果。
4.find是一个功能十分强大的命令。
如果么查找一个文件,使用find是不错的主意。它可以根据不同的参数提供搜索功能,例如,么查找文件名为httpd.conf的文件,他应该是在/etc中,就可以使用“find /etc -name httpd.conf ”,如果还记得有一个文件的文件名包含了httpd.conf的文件,但不知道全名,可以用通配符*,如“find /etc -name '*httpd' ”就可以将文件名包含httpd的文件都列出来,不过由于find在查找数据时相当消耗硬盘,所以一般不要使用find,有更好的命令可以取代它,那就是whereis 与locate.
例一:将过去系统上24小时内更改所内容的文件列出:find / -mtime 0,其中0是重点,0表示当前时间,所以,从现在开始到24小时前
例二:查找/etc下面的文件,如果文件日期比/etc/passwd新就列出来:find /etc -newer /etc/passwd
例三:搜索/home下面属于dmtsai的文件:find /home -user dmtsai
例四:搜索系统中不属于任何人的文件: find / -nouser,通过这个命令,可以很轻松地找出不太正常的我呢见,如果找到不属于系统任何人的文件时,不要太紧张,有时候是正常的。尤其是您以源码自行编译软件时。
例五:找出文件名为passwd的文件:find / -name passwd
例六:搜索文件中含有SGID/SUID/SBIT的属性:find / -perm +7000
7000就是---s--s--t,只要含有s或t的就列出,所以要加7000
例七:将上例中找到的文件使用ls -l列出来:find / perm +7000 -exec ls -l {} ;
其中-exec后面的命令就是额外的命令,{}表示”有find找到的内容“,所以,-exec ls -l {}就是将前面找到的文件详细信息列出来。-exec最后一定要以;结束才行。
例八:找出系统中大于1MB的文件:find / size +1000K
转载自:http://blog.chinaunix.net/uid-26983585-id-3391759.html