Linux 搜索(find, locate, which, Whereis, grep )命令(command cmd) 您所在的位置:网站首页 linux模糊搜索 Linux 搜索(find, locate, which, Whereis, grep )命令(command cmd)

Linux 搜索(find, locate, which, Whereis, grep )命令(command cmd)

2023-03-22 11:14| 来源: 网络整理| 查看: 265

Linux 搜索命令

在这里插入图片描述

Linux下查找相关命令主要有以下几个: which、 whereis、 locate、 find, 外加一个关键字行搜索grep

grep:UNIX 工具程序;可做文件内的字符串查找

一、最常用的搜索命令:find

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

1.1、根据 文件或目录名称 搜索 find 【搜索目录】【-name或者-iname】【搜索字符】

-name和-iname的区别一个区分大小写,一个不区分大小写

find /etc -name init (精准搜索,名字必须为 init 才能搜索的到)   find /etc -iname init (精准搜索,名字必须为 init或者有字母大写也能搜索的到,i.e.不区分大小写)   find /etc -name init (模糊搜索,以 init 结尾的文件或目录名*)   find /etc -name init??? (模糊搜索,? 表示单个字符,即搜索到 init 几问号就之后几字符_ )

1.2、根据 文件大小 搜索 +n 表示大于-n 表示小于n 表示等于

For Example,    在根目录下查找大于 100M 的文件      1 数据块 == 512 字节 0.5KB,也就是1KB等于2数据块    100MB == 102400KB204800数据块

find / -size +204800 1.3、根据 所有者和所属组 搜索

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

find /home -group root

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

find /home -user root

在home目录下查询群组ID为n的文件

find /home -gid n

在home目录下查询拥有者ID为n的文件

find /home -uid n

1.4、根据 时间属性 搜索

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

选项有下面几种:

访问(access):

-atime n: 将n*24小时内access过的文件列出来

状态发生改变(Create):

-ctime n: 将n*24小时内状态发生改变的文件列出来

被修改过(Modify):

-mtime n: 将n*24小时内被修改过的文件列出来

更新(newer):

-newer file: 把比file还要新的文件列出来

时间: +n : 超过n分钟-n: 在n分钟以内n: n分钟

For Example, 在 /etc 目录下查找5 分钟内被修改过属性的文件和目录 -cmin -5

find /etc -cmin -5 1.5、根据 文件类型或i节点 搜索 根据文件类型查找

-type :

f表示文件d表示目录l表示软链接

For Example,

查找 /home 目录下文件类型是目录的文件夹or文件or目录

type d find /home -type d 根据i节点查找

-inum :

For Example, 查找 /tmp 目录下i节点为400342的文件或目录 -inum 400342

find /tmp -inum 400342

1.6、组合条件 搜索 两个参数:

-a :两个条件同时满足(and) -o :两个条件满足任意一个即可(or)

For Example, 查找/etc目录下大于80MB同时小于100MB的文件 -size +(8010242) -a -(10010242)

find /etc -size +163840 -a -size -204800 二、在文件资料库中查找文件命令:locate 作用:

find files by name from one or more databases prepared by updatedb.

locate & whereis:

同:与whereis指令一样,locate也是从数据库建立的索引中查找, 不同: locate命令查找所有部分匹配的文件,使用之前可以使用updatedb命令手动更新数据库。

原理:

默认情况下(当filename中不包含通配符*),locate会给出所有与filename相匹配的文件的路径。

适用场合:

没有文件类型性质的模糊查找(你只记得某个文件的部分名称)

语法: locate【文件名】

-i : 不区分大小写

注意:    这里和 find 命令是有区别的,find是全盘检索, 而locate是在文件资料库中进行搜索。 So, locate命令的执行要比find命令执行速度快很多。

但是这里有个问题:文件资料库是需要不断更新的。 我们新创建的文件如果不更新 文件资料库,使用 locate 是查找不到的。 updatedb 手动更新资料库,但是对于/tmp目录下的新建文件,是更新不到文件资料库的,因为/tmp目录不属于文件资料库的收录范围。

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

locate a command,从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径

原理:

执行which命令时,which会在当前环境变量PATH中依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项,返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名。

适用场合:

一般用于查找命令/可执行文件所在的路径。 有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。

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

locate the binary, source, and manual page files for a command. 即:定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。

原理:

whereis命令首先会去掉filename中的前缀空格和以.开头的任何字符, 然后再在数据库(var/lib/slocate/slocate.db)中查找与上述处理后的filename相匹配的二进制文件、源文件和帮助手册文件,使用之前可以使用updatedb命令手动更新数据库。

适用场合:

二进制文件、源文件和帮助手册文件路径的查找。

注: whereis 和 which的功能差不多,用法也是后面跟一个要查找的命令,都是用来查找命令文件的。 查找结果除了显示命令所在的命令以外, where不会列出要查找的命令的别名相关的信息,而是会列出这个命令的帮助文档所在的目录。

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

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

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

-i: 不区分大小写 -v : 排除指定字符串

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

grep mysql /root/install.log

在 Linux 的配置文件中, 「#」:注释

如果我想看配置文件的内容,但是不想看注释,

就可以在搜索文件内容时排除「#」所在的行。

[#] grep -v [#] /etc/inittab

或者

^# grep -v ^# /etc/profile

Print =>>不显示以#开头的行



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有