linux的查找命令 find whereis locate
Linux 有三个查找文件的命令:find,whereis,locate 其中find 不常用,whereis与locate经常使用,因为find命令速度较慢,因为whereis与locate是利用数据库来查找数据,而find直接查找硬盘。 ? 1 whereis whereis 命令只能用户程序名称的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m) 和源代码文件(参数-s). 如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通?过遍历硬盘来查找,效率自然会很高。? 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate?查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。?
whereis [-bmsu] 文件或者目录名 -b: 只找二进制格式的文件 -m: 只找在说明文件manual 路劲下的文件 -s: ?只找source 源文件 -u: 查找不在上述三个选项中的其他特殊文件 ? 实例,查询ifconfig文件名 [[email?protected] ahome]# whereis ifconfig ? 2 locate? locate使用也非常简单,而且使用范围比whereis大的多,只需要部分文件名就可以进行模糊查询,同时locte还可以通过-r选项使用正则表达式,功能十分强大。与whereis一样?locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令更新索引数据库。 ? locate [-ir] keyword ? 实例,查询passwd命令,查找包含passwd字符的文件,显示前5条记录 [[email?protected] ahome]# locate passwd|head -n 5 ? 3 find find 命令遍历当前工作目录及其子目录,在硬盘上遍历查找,非常耗硬盘资源,查找效率相比whereis和locate较低。 ? find [path] [option] [action] ? 时间查找参数: ? ? ? ? ? ? ? ? -atime ?n: 将n*24小时内access过的文件列出来 ? ? ? ? ? ? ? ? -ctime ? n: 将n*24小时内状态发生改变的文件列出来 ? ? ? ? ? ? ? ? -mtime ?n: 将n*24小时内被修改过的文件列出来 ? ? ? ? ? ? ? ? -newer file: 把比file还要新的文件列出来 ? 名称查找参数: ? ? ? ? ? ? ? ? ?-gid ? n: ?寻找群组ID为n的文件 ? ? ? ? ? ? ? ? ?-group name: 寻找群组名称为name的文件 ? ? ? ? ? ? ? ? ?-uid ? n: ?寻找拥有者ID为n的文件 ? ? ? ? ? ? ? ? ?-user name: ?寻找拥有者名称为name的文件 ? ? ? ? ? ? ? ? ?-name file: ? ?寻找文件名为file的文件(可以使用通配符) ? -nouser: 寻找文件所有者不在/etc/passwd的文件 ? -nogroup: ? ?寻找文件的所有组不在/etc/group的文件
实例,将过去24小时内有改动的文件列出来。 [[email?protected] ahome]# find / -mtime 0|head -n 10 ? ? ? ? 将3天前24小时内有改动的文件列出 [[email?protected] ahome]# find / -mtime 3 ? ? ? ? ? ? ? 寻找/etc 下比/etc/passwd新的文件 [[email?protected] ahome]# find /etc -newer /etc/passwd ? 查找/var 下4天前被修改过的文件 [[email?protected] ahome]# find /var -mtime +4 ? 查找/var 下4天以内被修改过的文件 ? [[email?protected] ahome]# find /var -mtime -4 ? 查找/var 下4~5天内被修改过的文件 [[email?protected] ahome]# find /var -mtime 4 ? 查找/home 下属于latiny1的文件 [email?protected] ahome]# find /home -user latiny1 ? 查找不属于任何人的文件 [[email?protected] ahome]# find / -nouser ? 查找文件名为latiny1 的文件 [[email?protected] ahome]# find / -name latiny1 ? 查找/var 目录下文件类型为Socket的文件名 [[email?protected] ahome]# find /var -type s|head -n 10
? 查找包含有SGID或者SUID 或者SBIT属性的文件 [[email?protected] ahome]# find / -perm +7000|head -n 10 ? find还可以在后面再接其他合适的命令来处理查找结果,如查找/srv/ahome里包含SUID、SGID、SBIT属性的文件或者目录,然后对结果使用ls -l命令。 [[email?protected] ahome]# find /srv/ahome -perm +7000 -exec ls -l {} ; ? [[email?protected] ahome]# find /srv/ahome -name latiny2 -exec ls -l {} ; ? 查找/etc 下文件大小介于50K到60K的文件,并且对结果使用ls -l命令 [[email?protected] ahome]# find /etc -size +50k -size 60k -exec ls -l {} ; ? ? 查找/etc 下文件容量大于50K且文件所有者不是root的文件,并且对结果使用ls -l命令 [[email?protected] ahome]# find /etc -size +50k -not -user root -exec ls -l {} ; ? [[email?protected] srv]# find ./ -size -50k -not -user root -exec ls -l {} ; ? 查找/etc 容量大于1500k以及容量等于0的文件 [[email?protected] srv]# find /etc -size 0k -or -size +1500k (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |