首页
学习
活动
专区
圈层
工具
发布
24 篇文章
1
Linux系列教程(一)——Linux系统简介
2
Linux系列教程(四)——Linux常用命令之文件和目录处理命令
3
Linux系列教程(五)——Linux常用命令之链接命令和权限管理命令
4
Linux系列教程(六)——Linux常用命令之文件搜索命令
5
Linux系列教程(二)——Linux系统安装(手把手学安装centos6.8)
6
Linux系列教程(三)——Linux学习技巧
7
Linux系列教程(七)——Linux常用命令之帮助和用户管理命令
8
Linux系列教程(十一)——Linux软件包管理之RPM命令
9
Linux系列教程(十三)——Linux软件包管理之源码包、脚本安装包
10
Linux系列教程(八)——Linux常用命令之压缩和解压缩命令
11
Linux系列教程(十二)——Linux软件包管理之yum在线管理
12
Linux系列教程(九)——Linux常用命令之网络和关机重启命令
13
Linux系列教程(十四)——Linux用户和用户组管理之相关配置文件
14
Linux系列教程(十)——Linux文本编辑器vim
15
Linux系列教程(十五)——Linux用户和用户组管理之用户管理命令
16
Linux系列教程(十六)——Linux权限管理之ACL权限
17
Linux系列教程(十七)——Linux权限管理之文件系统系统属性chattr权限和sudo命令
18
Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
19
Linux系列教程(二十一)——Linux的bash基本功能
20
Linux系列教程(二十)——Linux的shell概述以及如何执行脚本
21
Linux系列教程(二十四)——Linux的系统管理
22
Linux系列教程(二十三)——Linux的服务管理
23
Linux系列教程(十九)——Linux文件系统管理之手工分区
24
Linux系列教程(二十二)——Linux的bash变量

Linux系列教程(六)——Linux常用命令之文件搜索命令

  前一篇博客我们讲解了Linux链接命令和权限管理命令, 通过 ln -s  链接名 表示创建软链接,不加-s表示创建硬链接;还有三个更改权限的命令,chmod命令可以更改文件或目录权限,chown命令可以改变文件或目录所有者,chgrp命令可以改变文件或目录所属组。但是大家需要注意的是,后面两个命令只能由root用户来完成,而chmod命令除了root用户能完成,还有所更改文件或目录的所有者。那么这篇博客我们将继续介绍Linux命令——文件搜索命令。

1、最强大的搜索命令:find

  首先进行一点说明,find命令是我们在Linux系统中用来进行文件搜索用的最多的命令,功能特别强大。但是我们要说的是尽量少用find命令去执行搜索任务,就算要搜索我们也应该尽量的缩小范围,也不要在服务器使用高峰期进行文件搜索,因为搜索也是很占系统资源的。这就需要我们在进行Linux文件整理的时候,尽量规范化,什么文件放在什么目录下都要有比较好的约定。

  find这个命令如果要完全讲清楚,恐怕得花费很长的时间,而且很多用法我们几乎用不到,所以这里我就不一一介绍此命令的每一种用法了,我会详细介绍几种最常用的用法,大家只需要记住这几种就完全够我们日常使用了。

  ①、命令名称:find

  ②、英文原意:

  ③、命令所在路径:/bin/find

  ④、执行权限:所有用户

  ⑤、功能描述:进行各种花式文件搜索

  ⑥、语法:find【搜索范围】【匹配条件】

注意:Linux搜索和windows是有明显区别的,Linux严格区分文件大小写。

一、根据 文件或目录名称 搜索

  find 【搜索目录】【-name或者-iname】【搜索字符】:-name和-iname的区别一个区分大小写,一个不区分大小写

  ①、find /etc -name init   (精准搜索,名字必须为 init 才能搜索的到)

  ②、find /etc -iname init   (精准搜索,名字必须为 init或者有字母大写也能搜索的到)

  ③、find /etc -name *init  (模糊搜索,以 init 结尾的文件或目录名) 

  ④、find /etc -name init??? (模糊搜索,? 表示单个字符,即搜索到 init___)

二、根据 文件大小 搜索

  比如:在根目录下查找大于 100M 的文件

  find / -size +204800

  这里 +n 表示大于,-n 表示小于,n 表示等于

  1 数据块 == 512 字节 ==0.5KB,也就是1KB等于2数据块

  100MB == 102400KB==204800数据块

三、根据 所有者和所属组 搜索

  ①、在home目录下查询所属组为 root 的文件

    find /home -group root

  ②、在home目录下查询所有者为 root 的文件

    find /home -user root

四、根据 时间属性 搜索

  find 【路径】【选项】【时间】

   选项有下面三种:-amin  访问时间

           -cmin   文件属性被更改

           -mmin  文件内容被修改

  时间:+n,-n,n分别表示超过n分钟,n分钟以内和n分钟

  范例:在 /etc 目录下查找5 分钟内被修改过属性的文件和目录

     find /etc -cmin -5

五、根据 文件类型或i节点 搜索

  -type 根据文件类型查找:f表示文件,d表示目录,l表示软链接

  范例:查找 /home 目录下文件类型是目录的   find /home -type l

  -inum 根据i节点查找

  范例:查找 /tmp 目录下i节点为400342的文件或目录  find /tmp -inum 400342

六、组合条件 搜索  

  这里有两个参数:

  ①、-a  表示两个条件同时满足(and)

  ②、-o  表示两个条件满足任意一个即可(or)

  范例:查找/etc目录下大于80MB同时小于100MB的文件

  find /etc -size +163840 -a -size -204800

2、在文件资料库中查找文件命令:locate  

  ①、命令名称:locate

  ②、英文原意:

  ③、命令所在路径:/usr/bin/locate

  ④、执行权限:所有用户

  ⑤、功能描述:在文件资料库中查找文件

  ⑥、语法:locate【文件名】

        -i  不区分大小写

注意:这里和 find 命令是有区别的,find是全盘检索,而locate 是在文件资料库中进行搜索。所以locate命令的执行要比find命令执行速度快很多。但是这里有个问题,文件资料库是需要不断更新的。我们新创建的文件如果不更新 文件资料库,使用 locate 是查找不到的。

updatedb  手动更新资料库,但是对于/tmp目录下的新建文件,是更新不到文件资料库的,因为/tmp目录不属于文件资料库的收录范围。 

3、搜索命令所在的目录及别名信息:which 

  ①、命令名称:which

  ②、英文原意:

  ③、命令所在路径:/usr/bin/which

  ④、执行权限:所有用户

  ⑤、功能描述:搜索命令所在的目录及别名信息

  ⑥、语法:which【命令】

    范例:查询 ls 命令所在目录以及别名信息

4、搜索命令所在的目录及帮助文档路径:whereis

  ①、命令名称:whereis

  ②、英文原意:

  ③、命令所在路径:/usr/bin/whereis

  ④、执行权限:所有用户

  ⑤、功能描述:搜索命令所在的目录及帮助文档路径

  ⑥、语法:whereis【命令】

    范例:查询 ls 命令所在目录以及帮助文档路径

5、在文件中搜寻字符串匹配的行并输出:grep

  ①、命令名称:grep

  ②、英文原意:

  ③、命令所在路径:/bin/grep

  ④、执行权限:所有用户

  ⑤、功能描述:在文件中搜寻字符串匹配的行并输出

  ⑥、语法:grep -iv 【指定字符串】【文件】

        -i 不区分大小写

        -v 排除指定字符串

    范例:查找 /root/install.log 文件中包含 mysql 字符串的行,并输出

    grep mysql /root/install.log

6、总结

  本篇博客我们介绍了几种文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而locate是在文件资料库中进行搜索,对比find命令搜索速度快很多,但是新创建的文件如果没有收录到文件资料库中,使用locate命令是搜索不到的,再就是/tmp目录是不收录到文件资料库的,也就是说使用locate命令搜索不到在/tmp目录下的文件。

  然后我们介绍搜索命令所在的目录以及别名信息which,搜索命令所在的目录以及帮助文档路径whereis,最后一个命令grep和前面搜索文件或目录命令是不同的,grep是在文件中搜索匹配的字符串,是在文件中进行内容搜索,这个命令后面用到的比较多,大家需要记住用法。

下一篇
举报
领券