which、whereis、locate文件查找命令
创始人
2024-05-31 10:20:35
0

Linux下查找文件的命令有which、whereis、locate和find,find命令因要遍历文件系统,导致速度较慢,而且还会影响系统性能,而且命令选项较多,就单独放一篇介绍,可参见find命令——根据路径和条件搜索指定文件_1688red的博客-CSDN博客

一、which命令

which命令仅用来查看外部Shell命令程序所在的位置,查找的路径由PATH环境变量决定。

which命令的语法格式如下:

which [选项] 外部命令

常用选项:

  • -a或者--all:从PATH规定的路径中找出所有同名命令程序所在位置,不带该选项时,将只显示第一个找到的程序。

示例如下:

#查看外部命令ip所在的位置
[root@myEuler ~]# which ip
/usr/sbin/ip#查看外部命令which所在的位置
[root@myEuler ~]# which -a which
/usr/bin/which# history不是外部命令,故提示在PATH规定的路径中找不到该命令
[root@myEuler ~]# which history
which: no history in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)# 可通过type命令查看一个命令是否为外部命令
[root@myEuler ~]# type history
history 是 shell 内建[root@myEuler ~]# type which
which 已被录入哈希表 (/usr/bin/which)

二、whereis命令

whereis也只在一些特定的目录中查找文件,默认情况下,查找范围会比which要稍大一些,除了可以查找命令程序所在位置外,也可以查找一些非命令程序。

whereis命令的语法格式如下:

whereis [选项] 文件名

 常用选项如下:

  • -l:列出whereis的有效查找路径
  • -b:只搜索二进制格式的文件
  • -m:只搜索手册和信息
  • -s:只搜索源代码
  • -u:搜索不在上述三个项目中的其它不常见记录

示例如下:

#列出有效查找路径
[root@myEuler ~]# whereis -l
bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib
……此处省略部分输出……#查找文件passwd可能所在的位置
[root@myEuler ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd#若查找的文件是命令,且有man手册文档,则同时也显示手册文档
[root@myEuler ~]# whereis man
man: /usr/bin/man /usr/share/man /usr/share/man/man1/man.1.gz#只显示手册文档
[root@myEuler ~]# whereis -m man
man: /usr/share/man/man1/man.1.gz

三、locate命令

locate命令是利用数据库来查找文件,相比前面的which、whereis和find,速度更快,效率更高。

locate命令的语法格式如下:

locate [选项] 文件名

常用选项如下:

  • -i:忽略大小写
  • -c:不输出文件名,仅统计找到的文件数量
  • -l N:N为整数,表示仅输出找到的N个文件
  • -S:输出locate所使用的数据库文件的相关信息
  • -r:后面可接正则表达式的显示方式

特别说明:locate是基于数据库的,起初这个数据库可能不存在,必须执行【updatedb】命令建立数据库。很显然,数据库建立后,如果有新文件产生,利用locate将无法找到这个新文件,这时可以再执行【updatedb】命令更新数据库。

若提示”未找到updatedb或locate命令“,请执行以下命令安装mlocate软件包即可

[root@myEuler ~]# dnf -y install mlocate

示例如下:

#未建立数据库时,将会提示错误
[root@myEuler ~]# locate -l 3 passwd
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory#查看数据库信息
[root@myEuler ~]# locate -S
数据库 /var/lib/mlocate/mlocate.db:12,235 文件夹87,765 文件4,912,049 文件名中的字节数2,279,760 字节用于存储数据库#找出系统中所有文件名包含了passwd的文件,且只显示前3个
[root@myEuler ~]# 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文件的设置读取硬盘,从而建立或更新数据库。

相关内容

热门资讯

安卓为什么难用鸿蒙系统,探寻其... 你有没有发现,最近手机圈里有个大热门话题,那就是安卓和鸿蒙系统的较量。很多人都在问,为什么安卓手机那...
emui是安卓系统还是鸿蒙系统... 哦,亲爱的读者,你是否曾在手机界面的角落里,瞥见那个独特的EMUI字样,心中不禁好奇:这EMUI,究...
安卓系统能用联通卡吗 你有没有想过,你的安卓手机能不能用联通的卡呢?这个问题,估计不少手机用户都好奇过吧!今天,就让我来给...
王者荣耀安卓系统改变,畅享指尖... 你知道吗?最近王者荣耀在安卓系统上可是来了一场大变身呢!这可不仅仅是界面上的小改动,而是从内到外都焕...
安卓V13原生系统,原生系统新... 你知道吗?最近安卓系统又来了一次大升级,那就是安卓V13原生系统!这可不是一个小打小闹的更新,而是带...
安卓4删系统内存太小,揭秘内存... 亲爱的安卓用户们,你是不是也遇到了这样的烦恼:手机运行越来越慢,打开应用都要等半天,甚至有时候还会出...
怎么隔空传送安卓系统,安卓系统... 你有没有想过,如果有一天,你可以在不接触任何设备的情况下,将安卓系统“传送”到另一台设备上,那会是多...
诺基亚下载安卓系统软件,开启智... 你有没有想过,那些曾经陪伴我们度过无数时光的诺基亚手机,现在竟然也能下载安卓系统软件了呢?没错,就是...
ios系统下载安卓版本最好,安... 你有没有想过,有时候你的手机上装的那个iOS系统,竟然也能下载安卓版本的应用?听起来是不是有点神奇?...
电脑装安卓触控系统 你有没有想过,你的电脑也能像手机一样,轻松滑动、点戳呢?没错,就是那种安卓触控系统!今天,就让我带你...
安卓系统接单截图图片高清,高清... 你有没有想过,有时候手机屏幕上的那些截图,竟然能成为我们生活的小帮手?今天,就让我带你一起探索如何用...
安卓手机怎样下载双系统,安卓手... 你有没有想过,你的安卓手机可以变成一个双面神呢?一边是熟悉的安卓系统,一边是全新的操作系统,是不是听...
安卓手机模拟ios系统下载 你有没有想过,你的安卓手机也能拥有iOS系统的风采呢?没错,就是那个以简洁界面和流畅体验著称的iOS...
安卓系统的手机缓存文件,安卓手... 你有没有发现,你的安卓手机用久了,速度变得越来越慢?别急,别急,让我来给你揭秘安卓系统手机缓存文件的...
安卓11系统特别费电吗,特别费... 最近你的安卓手机是不是感觉有点儿“火气大”?电池续航能力明显不如以前,是不是在怀疑是不是安卓11系统...
安卓纯净系统开机内存,纯净安卓... 你有没有发现,每次打开你的安卓手机,那开机速度简直就像火箭一样快?这背后,可是安卓纯净系统在默默发力...
平板如何升级安卓8系统,轻松迈... 你那平板电脑是不是已经有点儿“老态龙钟”了?别急,别急,今天就来教你怎么给它来个青春焕发,升级到安卓...
机械师安卓系统,智能机械领域的... 你知道吗?在手机世界里,有一个特别的存在,那就是机械师安卓系统。它就像一位低调的魔术师,把普通的手机...
安卓系统苹果系统安全吗,安全性... 说到手机操作系统,安卓和苹果系统绝对是两大巨头。它们各有各的特色,但安全性能如何呢?今天,咱们就来聊...
安卓系统swap有什么好处,A... 你有没有发现,你的安卓手机最近运行得特别顺畅?是不是因为你的系统里有个神秘的“swap”功能?别小看...