作为码农,你有时需要查找一些文件或者命令在哪里?而这时候我们就需要用到相关的指令进行操作了,特别方便,但是不去理解很容易进坑!
命令档名的搜寻:which
文件档名的搜寻:whereis, locate, find
●名称:whereis
功能:定位文件所在的目录
使用whereis命令可以定位常用命令的位置:
[root@yanghsia root]#whereis ls (# 定位ls命令的位置)
ls:/bin/ls (# ls位于/usr/bln目录下)
whereis命令不是通过查找磁盘上的所有文件来实现定位的,你可以随便指定一个可执行文件,估计whereis会找不到,这是因为whereis是根 据环境变量PATH来查找文件的,而PATH通常设置成存放命令的那些路径,如 /bin、/usr/bin等,因此whereis的用途仅限于定位shell命令所在的位置。
可以通过echo $PATH查看自己的路径都包括什么!
●名称:find
功能:查找文件
find命令可以用来从指定的目录开始查找文件,它的速度虽比不上whereis命令,但没有任何限制,而且功能要比whereis命令强。
[root@yanghsia root]#find -name student.txt
/tmp/student.txt (# 查找结果)
●名称:locate
功能:查找文件或目录
除find命令外,locate也是在系统中查找文件的常用方法。
[root@yanghsia root]#locate student.txt (# 查找student.txt文件)
用locate命令查找的文件和find一样没有任何限制,但执行速度却比find要快不少,其主要原因在于,locate不是从磁盘中实时查找文件,而是到由updatedb命令产生的信息库中查找相应的文件和目录,这样一来速度当然快了。
[root@yanghsia root]#updatedb
注 意:如果locate找不到某个文件,而你又确信该文件肯定存在,那一定是updatedb生成的信息库已经过时了。此时你要做的就是以root身份登 录,然后执行updatedb命令,重新建立整个系统所有文件和目录的资料库,虽然这个过程可能会浪费一点时间,但以后再查找文件时就方便多了。
所以综上所述,用locate是最划算最常用的方法,当然find的功能更加强大,如果有对权限等要求的查找就需要用find了!