1.文件搜索命令locate
基本命令格式:locate -[ir] keyboard
参数:
- -i,忽略大小写。
- -r,后方接正则表达式(regex的含义)。
locate搜索:locate寻找到数据是由已经创建的数据库/var/lib/mlocate里面的数据查到的。由于不用直接去硬盘中搜索数据,因此速度很快。这也就导致了当我们删除一个文件或者新建一个文件的时候,有时候会找不到这个文件,必须手动更新/var/lib/mlocate这个数据库。命令:updatedb
updatedb:根据/etc/updatedb.conf中的设置去查找系统硬盘中的文件名,并更新/var/lib/mlocate内的数据文件。
我们现在看一下/etc/updatedb.conf文件:
可以看到,开头的yes说明/etc/updatedb.conf是生效的,下面PRUNEPATHS属性,说明后方所跟的路径是不在建立数据文件的范围内的。比如你在/tmp/下面建立一个新文件,即使updatedb了,也是无法locate找到的。
2.命令搜索命令
何为命令搜索命令?上面我们将locate是用来搜索文件的,而这里我们说的whichis和whereis是用来搜索命令所在位置的。
命令格式:whereis -[bmsu] 文件或者目录名
参数:
- -b:只查找二进制格式的文件
- -m:只查找在说明文件manual路径下的文件
- -s:只查找source源文件
- -u:查找不在上述三个选项中的其他特殊文件
这里我们主要区别一下locate和whereis、whichis,其实命令搜索命令也是文件搜索命令,不过whereis后面跟的是完整的文件名,而locate后面跟的是keyword,是部分文件名。除了文件名的不同,其他和locate都一样,也是从/var/lib/mlocate中查找数据。
3.find命令
基本命令格式:
find 【path】【option】【action】
例如:
find / -name passwd
上面这条命令说的是在/目录下查找文件名为passwd的文件。
再例如:
find /home -user vayne查找/home目录下用户vayne的所有文件。
find的特殊功能是可以在查询结果之后接一些额外动作,例如我们要将查到的结果通过ll列出来:
find / -name passwd -exec ls -l {}\;
当然后面跟的【option】参数也可以是一个正则表达式,例如包含httpd的文件,其正则:‘*httpd*’。
{}:代表find命令查询到的结果,反斜杠\用来转义分号;。