前言随着文件增多,使用搜索工具成了顺理成章的事情,但是在Linux中有很多的文件查询工具,我们又要怎么去选择使用。
目录
一、我的东西在哪——find命令?
find就是这样一个强大的命令,它能够迅速的在指定范围内查找到文件。find的基本语法如下所示:
find [搜索范围] [匹配条件]
例如,在/usr/bin/目录中查找zip命令:
注意:find命令会打印出文件的的绝对命令。
find命令还可以指定文件的类型。在Linux中,包括目录设备都以文件的形式表现,可以使用 - type选项来定位特殊文件类型。例如,在/etc/文件下查找名叫init.d的目录:
注意:在输入结果中出现了几行输出项。这是普通用户并没有进入这几个文件的权限,这样find再扫描时将跳过这几个目录。
参数 | 含义 | 参数 | 含义 |
b | 块设备文件 | f | 普通文件 |
c | 字符设备文件 | p | 命名管道 |
d | 目录文件 | l | 符号链接 |
二、更快速的定位文件——locate命令
尽管find命令已经展现了其强大的搜索能力,但对于大批量的搜索而言,还是会显得慢了一些,特别是当用户完全不记得自己的我文件放在哪里的时候。这时,locate命令会是一个不错的选择。如下:
搜索的结果几乎一瞬间就出现了。这不禁让人疑惑,locate是如何做到的?事实上,locate并没有进入子目录进行搜索,他有点类似与Google的桌面搜索,通过检索文件名数据库来确定文件位置。locate命令自动建立整个文件名数据库,不需要用户插手。可以使用updatedb进行更新数据库(此处命令需要有root权限)。
三、查找特定程序——whereis
whereis命令主要用于查找程序文件,并提供这个文件的二进制可执行文件,源代码文件和使用手册存放的位置。例如,查找find命令:
可以使用-b选项让whereis命令只查找这个程序的二进制可执行文件。
如果whereis没有找到文件,那将返回一个空字符串。
whereis无法找到某个文件可能原因是,这个文件没有存在于任何whereis命令搜索的子目录中。whereis命令检索的子目录是固定编写在它程序中的。看起来多少有点像是个缺陷,但把搜索限制在固定的子目录如/usr/bin、/usr/share/man中可以显著加快文件查找进度。
四、三者间的注意点
就如同文章标题而言find虽然是个一个强大的搜索命令,但是在可以使用其他搜索命令时还是建议不要使用find命令,因为在系统高峰期使用find命令会占用大量的系统内存资源。。locate所创建的数据库每天会更新一次,因此我们每次使用locate或whereis查找文件,有时会查到已经删除的数据,或者刚刚建立的文件无法被查到,原因是因为我们的数据库没有尽行更新。为了避免这种情况,建议在使用locate之前使用updatedb更新下数据库。
总结
在之前的文章中我们说了是十来个命令,如果后面在加入更多命令又如何解决记不住命令的问题,下一篇将会讲到帮助命令可以帮助大家更好的掌握命令的使用方法