关于linux:Linux常用命令之文件查找whichfindlocate命令讲解

37次阅读

共计 2835 个字符,预计需要花费 8 分钟才能阅读完成。

在之前的课程中,咱们介绍了 Linux 零碎的罕用文件解决命令和权限治理命令,明天咱们持续来学习 Linux 操作系统的其余解决命令。

1、文件搜寻命令 which 命令解释

  • 命令名称:which
  • 命令所在门路:/usr/bin/which
  • 执行权限:所有用户
  • 命令性能:显示系统命令所在目录
  • 语法:which [命令名称]

应用举例

比方咱们想要查找 ls 命令所在目录:

$ which ls

留神:which命令只能用于查找命令所在门路,不能查找一般文件,比方想用该命令查找名为 ffile1 的文件,执行 which file1之后是会提醒no file:

相干命令

which 命令性能相似的命令 whereis,应用办法和 which 一样,比方查找 chmod命令所在位置:

$ whereis chmod

2、文件搜寻命令 find 命令解释

  • 命令名称:find
  • 命令所在门路:/usr/bin/find
  • 执行权限:所有用户
  • 命令性能:在指定目录下查找任何文件或目录
  • 语法:find [搜寻门路] [参数] [查找关键字]

其实这条命令有点相似于在咱们 windows 零碎外面查找文件,只不过在 Linux 外面是用命令行来查找而已。find命令中,参数有几十种,咱们介绍罕用的几种。

应用举例

一、依据文件名来查找:比方我想在 /etc 目录查找名为 dnf 的文件

$ find /etc -name dnf

大家能够看到,为我找出了 2 个名为 dnf 的文件。这里揭示一下大家,这里查找是全匹配查找,并不是含糊查找,意思是这里只会为我查找名称全名为 dnf 的文件,而不是查找名称蕴含 dnf 的文件。

然而在有些状况下,咱们的确须要进行含糊查找,比方遗记了文件的全名,可能只记得文件名是 dnf 结尾,那么咱们能够用一个通配符 * 来进行查找:

$ find /etc -name dnf*

大家能够看到,为我查找进去了 5 个以 dnf 结尾的文件,其中蕴含了全名是 dnf 的文件,因而咱们能够分明 * 号是匹配任意字符。

还有一种状况,比方我清晰的记得文件是 dnf 结尾的,文件全名有 8 个字符,前面 5 个字符不记得了。在这种状况下,咱们能够用 ? 来进行辅助查找,一个 ? 匹配一个字符:

$ find /etc -name dnf?????

咱们能够看到,为我查找出了 2 个文件名为 dnf 结尾,全名是 8 个字符的文件。

留神:应用 find 查找文件,占用零碎的资源越少越好,因而咱们在查找的时候,定位门路越准确越好,查找的关键字越全越好。而且最好不要在零碎根目录上面查找,这样会全盘扫描,会耗费零碎的大量资源。

二、依据文件大小来查找:-size

这里文件大小个别都是以 block 数据库块来计算的,一个数据块 =512 字节,因而 1KB= 2 个数据块。比方咱们要查找文件大小为 1M 的文件:

$ find /etc -size +2048

大家留神,在数字 2048 后面我用了一个 + 号,示意文件大于 1M。如果是小于 1M,咱们能够用 - 号:

$ find /etc -size -2048

  • 依据文件的所有者查找: -user

比方我要查找所有者为零碎用户 chuan 的用户的文件:

$ find /etc -user chuan

三、依据工夫来查找

这个属性有点简单,能够依照天来查找,也能够依照分支来查找:

天:ctime,atime,mtime

分钟:cmin,amin,mmin

  • c-change:示意文件的属性被批改,蕴含所有者、所属组、权限
  • a-access: 示意被拜访、浏览过
  • m-modify: 示意文件的内容被批改过

这里还有个要留神的,就和咱们在应用 -size 属性一样,有 -+ 的辅助,- 示意之内,+ 超过。比方咱们查找 2 分钟内被批改过的文件:

$ find /etc -mmin -2

四、依据文件类型来查找:-type

罕用的类型有二进制文件 f,软链接文件 l,目录 d。比方咱们要查找类型为 f 的文件:

$ find /etc -type f

如果咱们想要在 /home 门路查找名称为 up结尾的目录,该如何查找呢?这里咱们就要用到 Linux 查找的连接符:

  • -a and 逻辑与连贯
  • -o or 逻辑或链接

那么咱们的命令能够写成:

$ find /home -name up* -a -type d

五、连贯执行符:-exec

在上一个说到依据文件类型来查找的时候,咱们有用到查找连接符 -a-o,这里再介绍一个绝对简单一点的连接符 -exec。意思是:在执行命令查找完之后,再接着对执行后果进行操作。

比方咱们查找 /var/log 目录上面文件名为 dnf 结尾的文件,并列出这些文件的属性:

$ find /var/log -name dnf* -exec ls -l {} \;

大家必定很纳闷这条命令中 {} \; 是什么意思,其实这个是固定格局,大家记住就行了。{} 示意 find 查问的后果

3、locate 命令应用详解

  • 命令名称:locate
  • 指令英文原义:list files in databases
  • 命令所在门路:/usr/bin/find
  • 执行权限:所有用户
  • 命令性能:寻找文件或目录
  • 语法:locate [查找关键字]

该命令在 unix 零碎外面不提供,只有 Linux 零碎才有

应用举例

比方要查找 service 的文件:

$ locate service

执行这条命令,大家会发现查找速度十分快,比 find 命令查找文件快多了。那有些同学就会说,我就用 locate 命令查找文件,干嘛还要 find 命令呢?

为解答这个问题,咱们先创立一个新的文件,比方我在 test 目录新建一个 file3的文件,而后再执行命令 $ locate file3,发现并没有查找后果,然而这个文件缺失是存在的。

这是为什么呢?因为执行 locate 命令查找,是通过 Linux 文件数据库去查找,并不是扫描磁盘,因而查找速度会要比 find 查找快很多。而我刚新建的文件,并没有同步到 Linux 的文件数据库外面去,因而通过 locate 是查找不到的。那么咱们如何把新建的文件同步到 Linux 文件数据库呢?有两种形式:

  • 期待 Linux 零碎主动执行工作
  • 手动执行同步命令

所以接下来咱们来解说 Linux 的另外一个命令:updatedb

4、updatedb 命令应用详解

  • 命令名称:updatedb
  • 指令英文原义:update the slocate database
  • 命令所在门路:/usr/bin/updatedb
  • 执行权限:所有用户
  • 命令性能:建设系统目录文件的数据库
  • 语法:updatedb

$ updatedb

5、grep 命令应用详解

  • 命令名称:grep
  • 命令所在门路:/bin/grep
  • 执行权限:所有用户
  • 命令性能:在文件中搜寻字符串匹配的行并输入
  • 语法:grep [指定字符] [源文件]

留神:这个命令并不是搜寻文件,而是在文件中搜寻匹配的字符串,并输入这一行。然而 grep 的作用不仅仅如此,前面教程中咱们会持续介绍该命令的应用。

应用举例

比方我要查找 /etc/services 文件外面的 tftp相干的,如果咱们间接用之前学习的命令比方 catvimmore等命令,发现文件内容太长,太难找了,这种状况下咱们执行:

$ grep tftp service

以上 4 种命令就是咱们日常中应用最多的文件搜寻相干的命令以及应用办法。

正文完
 0