大家好,我是良许。

在系统里查找文件,是所有工程师都必备的技能(不管你用的是 Windows 、Linux、还是 MacOS 系统)。对于 Linux 操作系统,单单一个 find 命令就可以完成非常多的搜索工作。

但是,文件搜索命令远不止一个 find 命令,还有很多。本文就对 Linux 下文件搜索命令进行一个科普,让你能够在短时间内找到自己需要的文件。

1. find

find 命令应该是最经典的命令了,谈到搜索工具第一个想到的肯定是 find 命令。但是,find 命令非常强大,想要把它的功能都介绍一遍,恐怕要写好几篇文章。

所以,这里就偷个懒,介绍最基本的,根据文件名查找文件的方法。假如我们想搜索当前目录(及其子目录)下所有 .sh 文件,可以这样搜索:

2. locate

locate 是另外一个根据文件名来搜索文件的命令。区别于 find 命令,locate 命令无需指定路径,直接搜索即可。

这个命令不是直接去系统的各个角落搜索文件,而是在一个叫 mlocate.db 的数据库下搜索。这个数据库位于 /var/lib/mlocate/mlocate.db ,它包含了系统里所有文件的索引,并且会在每天早上的时候由 cron 工具自动更新一次。

正因为如此,locate 的搜索速度远快于 find 命令,因为它直接在数据库里检索,速度自然更快。

locate 命令在找到文件之后,将直接显示该文件的绝对路径,比如:

但是 locate 命令有个弊端,它无法搜索当天所创建的文件,因为它的数据库一天只在早上更新一次。比如我现在创建一个新文件,locate 没办法搜索到:

为了解决这个问题,我们可以使用 updatedb 命令手动去更新它的数据库:

$ sudo updadb

然后,我们就可以搜索到新文件了。

3. which

which 命令主要用来查找可执行文件的位置,它搜索的位置指定在 $PATH$MANPATH 环境变量下的值,默认情况下,which 命令将显示可执行文件的第一个存储位置:

如果某个可执行文件存储在多个位置,可以使用 -a 选项列出所有的位置。

如果你想一次性查找多个文件,可以直接跟在 which 命令后面即可。

4. whereis

whereis 命令会在系统默认安装目录(一般是有root权限时默认安装的软件)查找二进制文件、源码、文档中包含给定查询关键词的文件。(默认目录有 /bin, /sbin, /usr/bin, /usr/lib, /usr/local/man等类似路径)。

一般包含以下三部分内容:

  • 二进制文件的路径
  • 二进制文件的源码路径
  • 对应 man 文件的路径

比如我们现在搜索 ls 命令:

我们可以使用 -b 选项来只搜索可执行文件所在位置,使用 -B 选项指定搜索位置,使用 -f 选项列出文件的信息。

同样地,我们可以使用 -s 限定只搜索源码路径,使用 -m 搜索 man page 路径,使用 -s 指定搜索源代码文件的路径,使用 -M 指定搜索帮助文件的路径。


公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

厉害了!除了find命令,还有这么多文件查找命令,高手必备!的更多相关文章

  1. Linux 执行文件查找命令 which 详解

    某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which  查看可执行文件的位置 whereis 查看文件的位置 locate   配合数据库查看文件位置 find   实际搜寻硬盘查 ...

  2. 文件查找命令find

    十六. 文件查找命令find: 下面给出find命令的主要应用示例:    /> ls -l     #列出当前目录下所包含的测试文件    -rw-r--r--. 1 root root 48 ...

  3. Linux下的文件查找命令——find

    Linux下几个常见的文件查找命令: which       查看可执行文件的位置 whereis    寻找特定文件,查看文件的位置 locate       配合数据库查看文件位置 find    ...

  4. Linux文件查找命令find,xargs详述【转】

    转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Li ...

  5. [转帖]linux下的find文件查找命令与grep文件内容查找命令

    linux下的find文件查找命令与grep文件内容查找命令 https://www.cnblogs.com/shileima/p/8431393.html 在使用linux时,经常需要进行文件查找. ...

  6. Linux文件查找命令 find 详解

    关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权 ...

  7. linux下的find文件查找命令与grep文件内容查找命令

    在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...

  8. (三)Linux命令基本格式以及文件处理命令

    命令基本格式 (1)命令提示符 如下是命令行的命令提示符,以此为例,讲解含义. 其中: root 当前登录用户名 localhost 主机名 ~ 当前所在的目录(即家目录,用户登录的初始位置) # 超 ...

  9. Linux文件查找命令find,xargs详述

    目录: 一.find 命令格式 1.find命令的一般形式为: 2.find命令的参数: 3.find命令选项: 4.使用exec或ok来执行shell命令: 二.find命令的例子: 1.查找当前用 ...

随机推荐

  1. Pyqt5_QlineEdit

    QlineEdit 方法 setAlignment() 按固定值方式对齐文本 Qt.AlignLeft:水平方向靠左对齐 Qt.AlignRight:水平方向靠右对齐 Qt.AlignCenter:水 ...

  2. 三,<ul><li>实际应用时遇到的问题

    在布局中使用的比较多的就是这个,快速排列一行或多行文字,还有横排显示作为导航栏标题栏等等书写格式:<ul>    <li>山东教育.....</li></ul ...

  3. Collection接口和list,set子类

    Collection接口常用的子接口有:List接口.Set接口List接口常用的子类有:ArrayList类.LinkedList类Set接口常用的子类有:HashSet类.LinkedHashSe ...

  4. Java——枚举类(疯狂Java讲义6.9)

    枚举类:有限而固定的类,使用enum关键字定义. 一个Java源文件中最多只能定义一个public访问权限的枚举类. 1.可实现一个或多个接口,默认集成了java.lang.Enum类(实现java. ...

  5. 前端基础进阶(十三):透彻掌握Promise的使用,读这篇就够了

    Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. 在实际的使用当中,有非常多的应用场景我们不能 ...

  6. 【GAN】GAN设计与训练集锦

    以下内容纯属经验之谈,无公式推断!部分内容源自其他博客或课程,并已标注来源. 问题篇[1] 1.模式崩溃 在某个模式(mode)下出现大量重复样本,如左图中,生成的样本分布靠得很近,较聚集,可视化如右 ...

  7. docker环境下的Grafana安装

    一.参考资源:https://grafana.com/docs/grafana/latest/installation/docker/ 二.过程 1.安装grafana 查看可用image [root ...

  8. 学习使用re做解析器爬小说

    一.背景:近期学习python爬虫中看到,在对网页内容进行解析的技术中,re正则表达式工具也是一个很好的工具,使用re编制爬虫工具正好熟悉re正则表达式的使用. 二.环境及爬取目标 1.linux c ...

  9. Alpha冲刺 —— 5.8

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...

  10. Ondemand和Interactive gonernor工作逻辑简述

    ondemand 简述: 1.采样时间:sampling_rate,单位us 2.cpu usage是仅统计最新1us的一个smaple周期,以%体现cpu busy程度. 3.一般情况下,next频 ...