Linux学习 Part 4-文件搜索命令

作者: AE86过弯不刹车 | 来源:发表于2018-01-24 11:29 被阅读36次

    1. locate 搜索功能-比windows的搜索命令更强

        特点: 搜索速度很快。

        格式: locate 文件名

        功能: 搜索在后台数据库中按文件名进行搜索,搜索速度更快。

        缺点: 不能按照文件大小,日期什么进行搜索,locate只能通过文件名进行搜索。

        筛选规则: /etc/updatedb/conf

        注意:对于新创建的文件是无法找到的,因为locate命令不会整个数据库 里去搜索,会在/var/lib/mlocate数据库中进行搜索;

        mlocate的更新频率是1天1次,因此新建的文件是无法找见的;

        当然,可以提前对该数据库进行强制更新,用updatedb命令强制更新数据库。

        特殊情况:当特定目录下新建的文件名称与之前创建的文件名称相同,这样在使用locate时候,就还是无法找到该新建的文件,只会找到旧的,因为locate的搜索规则会遵循/etc/updatedb.conf该配置文件下的规则,该配置文件中规则中:

        第一行:yes代表全部生效,no代表全部不生效。

        第二行:第二行所包含的文件系统,都不搜索。

        第三行:包含的关键字,都不进行搜索。

        第四行:所列出的目录都不会进行搜索

    2. whereis 命令名

        功能:只能搜索系统命令,不能搜索文件。

        选项:

            -b:只查找可执行文件

            -m:只查找帮助文件

    3. which 命令名

        功能: 出了查询到命令所在位置以外,还会查询到别名所在位置

        例子: alias ls='ls --color=auto'

        意味着在执行了ls基础上,还执行了color=auto的命令,我们看到不同的文件颜色就是有通过这个功能展示的。

        注意:

        1. 可以发现,在查询cd命令的时候,发现找不到命令,是因为cd是属于Linux相关的shell中封装的内置命令,并不是放在lib或者bin中的外置命令。所以找不到。新版本中可以在bin中找到了。

        2. 在要执行命令时,实际执行的是脚本文件,在执行脚步文件的时候,需要执行脚本的绝对路径,那样的话调用起来非常麻烦,因此就有了环境变量的定义,类似于javac命令的编译执行。(echo $PATH   :/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/seal/.local/bin:/home/seal/bin)这些目录都是配置的环境变量,在调用的时候,会现在这些路径下寻找该脚本。因此对于自己写的脚本,要不将自己写的脚本放在这些路径下,要不在执行的时候就需要执行绝对路径。

    4. find 最为强大的搜索命令

        格式: find [搜索范围] [搜索条件]

        样式: find / -name install.log

        选项:

            a. find /root -iname install.log 不区分大小写(Linux是严格区分大小写的)

            b. find /root -user root 按照所有者进行搜索

            c.find /root -nouser查找没有所有者的文件(常用),任何重要文件都要有所有者,如果没有所有者,一般都是垃圾文件,但是要小心,内核产生的在proc和sys文件夹下产生的文件可能没有所有者,不用管。

            d. find /var/log/ -mtime +10 查找10天前修改的文件

                  -10 10天内修改的文件

                10 第10天当天修改的文件

                +10 10天前修改的文件

                atime 文件访问时间

                ctime 改变文件属性

                mtime 修改文件内容

            e. find /root -size +25k 查找大于25k的文件

                +25k

                25k 三个与其同理

                -25k

                M 按照MB字节进行查找

                G 按照GB进行查找

                注意:如果不设定单位的话,默认的是数据块,而且并不是格式化分割的数据快,是硬盘的扇区进行分割的,一般是默认512个字节。

            扇区定义:

    扇区示意图

                f. find /root inum 262421 通过i节点进行查询

                g. find /root -size +20k -a -size +50

                -a是与逻辑语:and

                -o是或逻辑语:or

                h.find /root -size +20k -a -size +50k-execls -lh{}\;

                含义:蓝色字体的执行结果,通过-exec命令,交给ls -lh命令进行执行,{}\;是标准格式。

                固定格式:执行查询获得结果 -exec 命令 {}\;

                功能: 按照条件进行搜索

                通配符:

                    a. * 匹配任意内容 find / -name "install.log*"(注意使用双引号扩起来)

                    b. ? 匹配任意一个单独字符

                    c.[] 匹配任意一个中括号内的字符

                    例如:有root下有abc和abd两个文件,执行find /root -name ab[cd]就会将两个文件全部找见。

                    使用注意:

                    a. 在搜索的时候,需要严格注意搜索范围,否则会浪费资源。

                    b.find是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。

    5.gred 搜索字符串命令

        格式: grep [选项] 字符串 文件名

        功能: 在文件中查找匹配的字符串

        选项: -i 忽略大小写

        -v 排除指定字符串

        与find区别:

            find系统:在系统中搜索复合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。

            gred命令:在文件中搜索复合条件的字符次,如果需要匹配,使用正则表达式进行匹配,正则表达式包含匹配。

        总结:find查文件的时候,用通配符匹配,gred用正则表达式匹配查询字符串。

    相关文章

      网友评论

        本文标题:Linux学习 Part 4-文件搜索命令

        本文链接:https://www.haomeiwen.com/subject/uoayaxtx.html