Linux下的查找命令find/locate/which/whereis/type
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