开发者社区> 小西blue> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

linux查找文件命令

简介: Linux与查找相关的命令主要有以下4个:whereis、locate、find、which。
+关注继续查看

Linux与查找相关的命令主要有以下4个:whereis、locate、find、which。其中find 不常用,whereis与locate经常使用,因为whereis与locate是利用数据库来查找数据,而find直接查找硬盘,速度较慢。which则是在PATH变量指定的路径中搜索指定的系统命令的位置。下面讲一下各自的用法

whereis

whereis 命令只能对用户程序名称的搜索,即:定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。

whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

whereis [-bmsu] 文件或者目录名

  -b: 只找二进制格式的文件

  -m: 只找在说明文件manual 路劲下的文件

  -s: 只找source 源文件

  -u: 查找不在上述三个选项中的其他特殊文件

例如:

root@test config]# whereis find
find: /bin/find /usr/bin/find /usr/share/man/man1/find.1.gz

[root@test config]# whereis -b find
find: /bin/find /usr/bin/find

[root@test config]# whereis -m find
find: /usr/share/man/man1/find.1.gz

[root@test config]# whereis -s find
find:

[root@test config]# whereis -u find
find: /bin/find /usr/bin/find /usr/share/man/man1/find.1.gz

locate

使用范围比whereis大的多,只需要部分文件名就可以进行模糊查询,同时locte还可以通过-r选项使用正则表达式,功能十分强大。与whereis一样 locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令更新索引数据库

locate [-ir] keyword

例如:查询passwd命令,查找包含passwd字符的文件,显示前3条记录

[root@oracledb ahome]# locate passwd|head -n 5
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd

find
命令遍历当前工作目录及其子目录,在硬盘上遍历查找,非常耗硬盘资源,能用which、whereis和locate就不要用find。

find [option] [path1 path2 ……] [filename]
参数说明:
时间查找参数:
-atime n: 将n*24小时内access过的文件列出来
-ctime n: 将n*24小时内状态发生改变的文件列出来
-mtime n: 将n*24小时内被修改过的文件列出来
-newer file: 把比file还要新的文件列出来
名称查找参数:
-gid n: 寻找群组ID为n的文件
-group name: 寻找群组名称为name的文件
-uid n: 寻找拥有者ID为n的文件
-user name: 寻找拥有者名称为name的文件
-name file: 寻找文件名为file的文件(可以使用通配符)

which

执行which命令时,which会在当前环境变量PATH中依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项,返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名。

一般用于查找命令/可执行文件所在的路径。有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。

以下是比较
这里写图片描述

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux 查找大文件
命令行如下 find. -type f -size+100M Linux系统下查找大文件或目录的技巧 当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢?以易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详...
753 0
Linux如何查找某个时间点后生成的空文件
今天遇到一个特殊需求,需要找到某天(例如2017-04-13)以及这之后生成的空文件。那么这个要怎么处理呢?这个当然是用find命令来解决。如下所示, -mtime -5 表示查找距现在 5*24H 内修改过的文件 -type f -empty 表示空文件 由于需要以显示修改时间等文件信息,所以使用-exec ls -lt {}\; 具体命令如下所示: $ find .
994 0
+关注
小西blue
乐于分享专注技术
43
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载