在之前的课程中,我们介绍了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种命令就是我们日常中使用最多的文件搜索相关的命令以及使用方法。

Linux常用命令之文件查找which、find、locate命令讲解的更多相关文章

  1. Linux输入输出重定向和文件查找值grep命令

    Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...

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

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

  3. Linux学习总结(十五)文件查找 which whereis locate find

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就 ...

  4. linux文件查找-find和locate

    一.find 使用语法:find  [查找目录]  [查找规则]  [查找完后执行的action] find是根据具体目录进行搜索 1.查找目录 如果不指定查找目录,默认在当前目录下进行查找 如果需要 ...

  5. Linux中3个文件查找相关命令详解

    源于:https://mp.weixin.qq.com/s/VPs-IXY6RoxbltHIxtIbng which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令 ...

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

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

  7. 嵌入式开发之命令行---linux下的find文件查找命令与grep文件内容查找命令

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

  8. Linux上的文件查找工具之locate与find

    前言 Linux上提供了两款工具用于查找文件,一款是locate,另一款是find. locate的特点是根据已生成的数据库查找,速度较快,但是查找的是快照数据,不准确. 因此在日常使用中,为了准确性 ...

  9. 【Linux相识相知】文件查找(locate/find)

    在用linux操作系统的时候,当我们忘记之前某个文件存储的位置,但是知道其文件名或者模糊的知道其文件名,我们都可以通过文件查找工具来查找,linux提供两种常用的查找工具,locate和find,在日 ...

随机推荐

  1. requests接口自动化4-登录后才能访问的get请求,需共享cookie

    登录后才能访问的get请求,需共享cookie fiddler里请求响应结果: 代码: import requests import json #form表单形式的post请求,用data传参,Con ...

  2. JS中this指向的更改

    JS中this指向的更改 JavaScript 中 this 的指向问题 前面已经总结过,但在实际开中, 很多场景都需要改变 this 的指向. 现在我们讨论更改 this 指向的问题. call更改 ...

  3. The solution for apt-get update Err 404

    最近在ubuntu 12.10上执行sudo apt-get update 命令后出现了如下错误: Ign http://extras.ubuntu.com natty/main Translatio ...

  4. 最短路——Floyd算法

    Folyd算法求最短路 介绍: Folyd算法是用来求带权图中每两点之间的最短路的动态规划算法,(它每次求得的值都可以在后面使用).该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学 ...

  5. python测试开发面试之深浅拷贝

    先来道题热热身 a = ('a', 'b','c') c = copy.copy(a) d = copy.deepcopy(a) if c == d: print("c和d的值相等" ...

  6. Ethical Hacking - NETWORK PENETRATION TESTING(4)

    Targeted packet sniffing airodump-ng --channel[channel] --bssid[bssid] --write[file-name][interface] ...

  7. java enum 枚举类

    图一代码: public enum LogMethodEnum { WEBCSCARDVALID("返回值"), WEBCSVERIFYPASSWORD("返回值&quo ...

  8. 今天完成了deviceman的程序,压缩成deivceman.rar

    目录在d:\android_projects\deviceman 压成了deviceman.rar 发送到了yzx3233@sina.com

  9. 【laravel】用户认证之----手动认证用户

    模型 如果某个模型类需要用于认证,必须继承自 Illuminate\Foundation\Auth\User 基类,否则会报错.然后在这个模型类中使用 Notifiable Trait,里面提供了用户 ...

  10. 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验

    摘要:想了解时下流行的自动驾驶相关AI模型吗?接下来就用华为云的ModelArts和百度的Easy DL带你体验一下AI平台是怎么进行模型训练的. 华为ModelArts自动学习 VS 百度Easy ...