• Linux文件搜索命令


    locate命令格式

    1.搜索文件命令:locate [文件名]

    特点:在后台数据库中按文件名搜索,搜索速度更快,消耗系统资源更少。

    2.locate命令所搜索的后台数据库路径:/var/lib/mlocate

    注意:默认更新频率为一天一次。在不同linux中,该数据库名字稍微不同,例如,locatedb、slocate、mlocate。可使用命令:locate locate搜索locate相关文件,可看到locate数据库名称。

    3.更新数据库,命令:updatedb

    注意:对于新建的文件,由于数据库没有更新,使用locate命令不能查到。可以使用updatedb强制更新数据库后即可查到。

    4.配置文件:/etc/updatedb.conf

    文件内容: PRUNE_BIND_MOUNTS = "yes" (开启搜索限制,yes为后面三项都生效。no为 后面三项都不生效)

    PRUNEFS = (搜索时,不搜索的文件系统)

    PRUNENAMES = (搜索时,不搜索的文件类型)

    PRUNEPATHS = (搜索时,不搜索的路径)

    例如:touch /root/cangls;touch /tmp/cangls;updatedb;locate cangls。

    显示为 /root/cangls只有一条,而/tmp下的cangls没有显示出来,原因在于locate搜索遵循配置文件 /etc/updatedb.conf, 在PRUNEPATHS中配置了/tmp/目录不进行搜索。所以没有进行查找

    • locate优点:效率高,耗费资源少

    • locate缺点是:只能按照文件名来搜索

    查看updatedb命令的配置文件 vi /etc/updatedb.conf

    命令搜索命令whereis与which

    1.命令:whereis [命令名](搜索系统命令所在路径以及帮助文档所在位置)

    选项:

    • -b:只查找可执行文件

    • -m:只查找帮助文件

    例:搜索ls命令,命令:whereis ls。如果输入“whereis -b ls”,只会显示红字。如果输入“whereis -m ls”,则只会显示黄字。

    ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz

    2.命令:which [命令名](搜索系统命令所在路径和查看到命令的别名)

    注意:whereis和which不能搜索shell(当前系统界面叫做shell)的默认命令(如:cd),只能搜索外部安装的命令。

    3.环境变量$PATH
    定义系统搜索命令的路径。whereis和which搜索命令的路径是依赖PATH所定义的路径。Linux执行命令的时候都要在path定义的目录中去寻找。

    系统命令不需要打绝对路径,如:ls这样的命令就可以不用加路径(/bin/ls)执行。如果是自己写的脚本或者自己写的程序,就需要打绝对路径,或者在$PATH中设置。

    命令:echo $PATH
    /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    find命令

    避免大范围的搜索,会非常浪费系统资源,建议不在直接在“/”目录下搜索
    1.格式:find 【搜索范围】【搜索条件】
    例:find /home -name 文件名;
    注意:find搜索默认是完全匹配。

    如果需要进行模糊查询,需要添加通配符,通配符有以下3种

    • ”匹配任意字符,例:find /home -name “test”,显示所有名字带test的文件;或例:find /home -name “”,home目录下的所有文件,包括隐藏文件。
    • “?”匹配任意一个字符,
    • “【】”匹配任意一个中括号内的字符,例:find /home -name “test【12】”,显示test1和test2文件;或find /home -name “【12】”,显示以1和2开头的文件。
      组合使用:例:find /home -name “
      【12】”,显示所有1和2结尾的文件

    2.find 按文件时间来搜索

    find /home -mtime +10 在home目录下,查找10天前修改的文件
    find /home -mtime 10 在home目录下,查找10天前当天修改的文件
    find /home -mtime -10 在home目录下,查找10天内修改的文件
    atime 文件访问时间
    ctime 改变文件属性
    mtime 修改文件内容

    3.find搜索

    • find /root -iname install.log #不区分大小写

    • find /root -user root #按照所有者搜索

    • find /root -nouser #查找没有所有者的文件 (常用)

      内核产生的文件有可能没有所有者,如在直接写入内存的目录中的文件/proc、/sys;外来文件也有可能没有所有者,如光盘、U盘插入Linux当中,因为内容是在Windos中建立的,Windos是忽略所有者这个概念的。所以其他文件在Linux中都有所有者,若没有则为垃圾文件应手动删除。

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

      -10 10天内修改文件、10 10天当天修改的文件、+10 10天前修改的文件

      atime 文件访问时间、ctime 改变文件属性的时间、mtime 修改文件内容的时间

    4.find 目录 -size 文件大小
    注意:文件大小用小写k和大写M。

    • find . -size 25k #查找文件大小是25KB的文件
      -25k 小于25KB的文件、25k 等于25KB的文件、+25k 大于25KB的文件
    • find . -inum 262422 #查找i节点是262422的文件

    知道文件名查i节点用ls -i,知道i节点查文件名用find . -inum (i节点)

    • find /etc -size +20k -a -size -50k #查找/etc/目录下,大于20KB并且小于50KB的文件

    -a and 逻辑与,两个条件都满足

    -o or 逻辑或,两个条件满足一个即可

    • find /etc -size +20k -a -size -50k -exec ls -lh {} ;

    查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息

    • -exec/ -ok 命令 {} ;对搜索结果进行操作

    能处理第一个搜索出来的结果的命令,才能放在“命令”处

    字符串搜索命令grep

    1.命令:grep [选项] 字符串 文件名(在文件当中匹配符合条件的字符串)

    选项:

    • -i:忽略大小写

    • -v:排除制定字符串

    例:grep "size" anaconda-ks.cfg,即搜索anaconda-ks.cfg文件中包含“size”的内容。

    2.find命令与grep命令的区别

    find:在系统中搜索符合条件的文件名,使用 通配符(完全)匹配。

    grep:在文件当中搜索符合条件的字符串,使用 正则表达式 (包含)匹配。

  • 相关阅读:
    Java学习日记之框架SSM
    Java学习日记之Maven
    Java学习日记之Redis
    文件夹浏览控件(.NET)
    扩展ComboBox(.Net)
    公交车路线查询系统后台数据库设计查询算法
    一个用于动态生成静态页面的类——TextTemplate
    远程控制程序
    公交车路线查询系统后台数据库设计关联地名和站点
    Ext上传文件
  • 原文地址:https://www.cnblogs.com/fynnn/p/14803676.html
Copyright © 2020-2023  润新知