Linux 搜索(find, locate, which, Whereis, grep )命令(command cmd) | 您所在的位置:网站首页 › linux模糊搜索 › Linux 搜索(find, locate, which, Whereis, grep )命令(command cmd) |
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/profilePrint =>>不显示以#开头的行 |
CopyRight 2018-2019 实验室设备网 版权所有 |