建设单位企业锁登陆网站,wordpress 显示大图,东方商易网站开发,dz论坛网站模板下载Linux下查找文件的命令有which、whereis、locate和find#xff0c;find命令因要遍历文件系统#xff0c;导致速度较慢#xff0c;而且还会影响系统性能#xff0c;而且命令选项较多#xff0c;就单独放一篇介绍#xff0c;可参见find命令——根据路径和条件搜索指定文件_…Linux下查找文件的命令有which、whereis、locate和findfind命令因要遍历文件系统导致速度较慢而且还会影响系统性能而且命令选项较多就单独放一篇介绍可参见find命令——根据路径和条件搜索指定文件_1688red的博客-CSDN博客
一、which命令
which命令仅用来查看外部Shell命令程序所在的位置查找的路径由PATH环境变量决定。
which命令的语法格式如下
which [选项] 外部命令
常用选项
-a或者--all从PATH规定的路径中找出所有同名命令程序所在位置不带该选项时将只显示第一个找到的程序。
示例如下
#查看外部命令ip所在的位置
[rootmyEuler ~]# which ip
/usr/sbin/ip#查看外部命令which所在的位置
[rootmyEuler ~]# which -a which
/usr/bin/which# history不是外部命令故提示在PATH规定的路径中找不到该命令
[rootmyEuler ~]# which history
which: no history in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)# 可通过type命令查看一个命令是否为外部命令
[rootmyEuler ~]# type history
history 是 shell 内建[rootmyEuler ~]# type which
which 已被录入哈希表 (/usr/bin/which)二、whereis命令
whereis也只在一些特定的目录中查找文件默认情况下查找范围会比which要稍大一些除了可以查找命令程序所在位置外也可以查找一些非命令程序。
whereis命令的语法格式如下
whereis [选项] 文件名 常用选项如下
-l列出whereis的有效查找路径-b只搜索二进制格式的文件-m只搜索手册和信息-s只搜索源代码-u搜索不在上述三个项目中的其它不常见记录
示例如下
#列出有效查找路径
[rootmyEuler ~]# whereis -l
bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib
……此处省略部分输出……#查找文件passwd可能所在的位置
[rootmyEuler ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd#若查找的文件是命令且有man手册文档则同时也显示手册文档
[rootmyEuler ~]# whereis man
man: /usr/bin/man /usr/share/man /usr/share/man/man1/man.1.gz#只显示手册文档
[rootmyEuler ~]# whereis -m man
man: /usr/share/man/man1/man.1.gz三、locate命令
locate命令是利用数据库来查找文件相比前面的which、whereis和find速度更快效率更高。
locate命令的语法格式如下
locate [选项] 文件名
常用选项如下
-i忽略大小写-c不输出文件名仅统计找到的文件数量-l NN为整数表示仅输出找到的N个文件-S输出locate所使用的数据库文件的相关信息-r后面可接正则表达式的显示方式
特别说明locate是基于数据库的起初这个数据库可能不存在必须执行【updatedb】命令建立数据库。很显然数据库建立后如果有新文件产生利用locate将无法找到这个新文件这时可以再执行【updatedb】命令更新数据库。
若提示”未找到updatedb或locate命令“请执行以下命令安装mlocate软件包即可
[rootmyEuler ~]# dnf -y install mlocate
示例如下
#未建立数据库时将会提示错误
[rootmyEuler ~]# locate -l 3 passwd
locate: can not stat () /var/lib/mlocate/mlocate.db: No such file or directory#查看数据库信息
[rootmyEuler ~]# locate -S
数据库 /var/lib/mlocate/mlocate.db:12,235 文件夹87,765 文件4,912,049 文件名中的字节数2,279,760 字节用于存储数据库#找出系统中所有文件名包含了passwd的文件且只显示前3个
[rootmyEuler ~]# locate -l 3 passwd
/etc/passwd
/etc/passwd-
/etc/ima/digest_lists/0-metadata_list-compact-passwd-0.80-10.oe2203sp1.aarch64
从上面的示例可以看到locate命令是依据/var/lib/mlocate内的数据库记录进行文件查找的。
而updatedb命令则根据/etc/updatedb.conf文件的设置读取硬盘从而建立或更新数据库。