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文件的设置读取硬盘,从而建立或更新数据库。

相关内容

热门资讯

糖尿病早期无症状 出现5种表现... 今天是世界糖尿病日,今年的主题是“早发现,早行动”。这一主题强调了及早识别风险并采取行动的重要性。不...
于根伟口误把侯森说成侯震 搞笑... 11月14日,天津津门虎队主教练于根伟在接受采访时发生了一次口误。在谈到中超金手套时,他不小心将北京...
猪肉价格创10年新低 源头近乎... 2026年11月11日,一条消息刷屏:11月9日,全国外三元生猪均价跌至8.63元一公斤,创近10年...
大理雪后初晴美如画 冬日浪漫画... 初雪降临大理苍山,洱海风光焕然一新。碧绿的湖水与连绵的青山在皑皑白雪的映衬下,展现出独特的冬日浪漫。...
导演:作品没做好不能赖短剧和A... 导演刘家成在接受中新网专访时谈到了对短剧分流长剧市场的看法。他认为,不能把作品没做好归咎于短剧和AI...
U19国足战平塔吉克斯坦 彭子... 央视网消息:熊猫杯第二轮,U19国足对阵塔吉克斯坦U19。彭子鸣头球破门,巴赫塔利扳平比分。最终,U...
全美停飞 机场周边酒店爆满 航... 当地时间11月13日晚,美国联邦航空管理局宣布解除全美范围内的地面停飞指令。然而,航班恢复正常运行仍...
华为轮值董事长在《时代》撰文 ... 华为轮值董事长徐直军在《时代》美国版上发表了一篇题为《走进华为的创新之旅——见证、亲历、引领》的文章...
马斯克回应Cybercab自动... 埃隆·马斯克在11月14日于X平台发布推文,回应科技博主MKBHD关于Cybercab每月299美元...
蔡天凤前夫哥哥承认曾写信编案情... 蔡天凤案再次曝光新细节,前夫哥哥指认弟弟为真凶,方媛的言论终于得到验证。最讽刺的是,蔡天凤不仅资助前...
餐饮排队王为什么都爱开在高端商... 广州白鹅潭万象城在国庆期间吸引了大量顾客,一家餐饮店单日最高排号超过5465桌。郑州和呼和浩特等地的...
走散的友情为何成了大众情绪出口... 在综艺节目《后会友期》中,厉娜与许飞在断联十五年后重逢。两人见面时哭得说不出话,这一幕很快冲上了热搜...
金世佳回应拒上综艺 只留角色站... 在内娱圈,许多艺人为了增加曝光度,通过直播、综艺节目、偶遇图、朋友圈截图等方式,几乎将自己的私生活完...
女子因拒绝给HR带咖啡被取消面... 11月13日,江苏昆山的一位求职者在BOSS直聘上与一家公司对接面试。到达后,HR通过消息要求她先点...
全球资金抛售黄金买美债概率大吗... 用1000万美元购买30年期美国国债,每年可以获得53.75万美元的利息。没有手续费,也不受市场波动...
广东男篮新帅谈执教理念:崇尚防... 今天,广东男篮新任主帅贝罗卡尔接受了采访。他表示自己崇尚防守,认为他的球队一直是联赛里防守最好的队伍...
五大AI巨头被诉叫停开发新模型... 美国五家AI巨头因一边警告人工智能可能失控,一边加速研发更先进的模型而遭到法律挑战。11月12日,由...
“绘见”深圳:长卷上的魅力地标... 深圳,这座从边陲小镇成长为现代化国际大都市的城市,见证了中国改革开放的辉煌历程。蛇口轰鸣的“开山炮”...
波切蒂诺能救曼联吗 重建球员信... 里奥-费迪南德认为,如果卡里克从曼联下课,毛里西奥-波切蒂诺将是候选名单中非常突出的人选。他表示,波...
微信能看短剧了 小范围测试中 11月12日,有网友发现微信发现页的“看一看”功能中新增了“短剧”入口。目前该功能正处于小范围灰度测...