Linux下的查找命令find/locate/which/whereis/type

China☆狼群 提交于 2020-03-13 05:55:51

Linux的查找命令有5个,分别如下:

which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果;

type:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。type命令其实不能算查找命令;

whereis:只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s);

locate:相当于find -name,可快速查找文件;

find:最常用和最强大的查找命令,可以用它找到任何想找的文件。

通常find不很常用,因为速度慢!
通常都是先使用whereis或者locate来检查,当真的找不到了,才用find查找。
这是因为whereis与locate是利用数据库来查找数据,所以相当快速,而且没有实际查询硬盘,比较节省时间。
whereis和locate寻找的数据是由已创建的数据 /var/lib/ 中查找。但是数据库的更新默认是每天更新一次(不同系统可能会有差异),所以当新建文件或删除文件后去查找该文件,whereis和locate会告诉你文件“not found”,因为必须更新数据库了。
要手动更新数据库的方法也很简单,直接输入updatedb即可。updatedb命令回去读取/etc/updatedb.conf中的配置,然后去硬盘里面进行查找文件名操作,最后更新整个数据库文件。

1. find

find的使用格式如下:
  $ find
  - : 所要搜索的目录及其所有子目录。默认为当前目录。
  - : 所要搜索的文件的特征。
  - : 对搜索结果进行特定的处理。

按名字查找:find . -name "*.java"; 查找多个目录下的文件:find /usr /home /tmp -name "*.jar"

按文件类型查找:find . -type d;

• b — 块(缓存)特殊
• c — 字符(未缓存)特殊
• p — 命名管道 (FIFO)
• s — 套接字

按时间查找:find . -mtime -1(查找一小时内修改过的文件,将time换成min则时间以分钟为单位)

• mtime — 文件内容上次修改时间
• atime — 文件被读取或访问的时间
• ctime — 文件状态变化时间
• -newer 指内容最近被修改的文件
• -anewer 指最近被读取过的文件
• -cnewer 指状态最近发生变化的文件

按文件大小查找:find / -size +5000000c(查找所有大于5M的文件)

按权限和所有者查找:find . -type f -perm 777 -exec ls -l {} \;

2.locate

3.whereis

4.which

参考链接

1.http://www.111cn.net/sys/linux/119218.htm

2.http://blog.csdn.net/wzzfeitian/article/details/40985549

3.http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html

4.Linux Find 命令精通指南

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!