美文网首页Linux学习之路
Linux系统学习之文件搜索命令(4)

Linux系统学习之文件搜索命令(4)

作者: 小荷才 | 来源:发表于2017-07-04 21:19 被阅读0次

    updatedb.conf配置文件

    此文件的作用是配置搜索条件,locate、whereis、which搜索命令就是按照此配置文件搜索的。

    vi /etc/updatedb.conf //打开updatedb.conf配置文件
    

    updatedb.conf配置文件的内容:

    //是否启用此配置文件,yes是生效,no是不生效
    PRUNE_BIND_MOUNTS = "yes" 
    //不搜索这些文件系统
    PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs" 
    //不搜索包含这些关键字的文件
    PRUNENAMES = ".git .hg .svn" 
    //这些目录中的文件不搜索
    PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
    
    

    locate命令

    locate [文件名]
    

    locate并不是直接在系统中搜索,而是在/var/lib/mlocate下存有一个数据库,它是在这个数据库中搜索的文件。
    优点:搜索数据库的好处就是它不需要遍历整个系统,所以搜索速度很快。
    缺点:mlocate数据库并不是实时更新的他的更新频率应该是一天一更新,所以你新创建的文件,用locate命令搜索不到,不过,locate提供了一个更新mlocate数据库的命令:

    updatedb //更新mlocate数据
    

    更新mlocate数据库后就可以搜索到新创建的文件了。

    搜索命令的命令whereis、which

    whereis:搜索命令所在路径已经帮助文件所在位置。

    whereis [选项] [命令名]
    选项:
    -b:只查找可执行文件
    -m:只查找帮助文档
    

    which:搜索命令所在路径及别名。

    which [命令名]
    

    注:whereis、which不能找到Linux里面shell的内置命令,如cd。

    find命令

    Linux里面功能最强大的文件搜索命令,支持使用通配符匹配。

    find [搜索范围] [搜索条件]
    例如: find / -name install.log //搜索根目录选的名字叫做install.log的文件
    注:使用find的时候避免大范围搜索,会非常耗费系统资源
    

    find搜索条件

    -name //按照文件名搜索
    举例:find /root -name abc //查找root下面叫做abc的文件
    -iname //不区分大小写
    举例:同上
    -user //按照所有者搜索
    举例:find /root -user root //查找root下所有者为root用户的文件
    -nouser //查找没有所有者的文件
    举例:find /root -nouser //查找root下没有所有者的文件
    -mtime //文件修改时间 +10就是十天前  10第十天当天 -10 十天内
    举例:find /var/log -mtime -10 //查找var/log 下面在十天内修改过的文件
    atime //文件访问时间
    举例:同-mtime
    ctime //改变文件属性
    举例:同-mtime
    -size //安装文件大小搜索 -25k是小于25k   25k是等于25k   +25k是大于25k
    举例:
    find . -size 13k //搜索当前目录下文件大小是13k的文件
    -inum //按照i节点搜索
    举例:find . -inum 14866 //搜索当前目录下i节点是14866的文件
    -a //and 逻辑与,两个条件都满足
    举例:find . -size +1k -a -size -4k //搜索当前目录下文件大小大于1k并且小于4k的文件
    -o //or 逻辑或,两个条件满足一个即可
    举例:find . -size -3k -o -size +5k //搜索当前目录下文件大小小于3k或者大于5k的文件
    -exec [命令] {} \; //对搜索结果执行的操作
    举例:find . -size +2k -a -size -10k -exec ls -l {} \; //搜索当前目录下文件大小大于2k并且小于10k的文件,然后使用ls列出这些的内容,注只要使用了-exec 结尾就要加上{} \; 这是此命令的固定格式
    举例:find /root -name abd -exec rm -rf {} \; //查找root目录下文件名称是abd的文件然后删除他
    

    grep

    grep是字符串搜索命令,在文件中匹配符合条件的字符串,它支持正则表达式匹配

    grep [选项] 字符串 文件名
    选项:
    -i 忽略大小写
    -v 排除指定字符串
    举例:grep -i "size" anaconda-ks.cfg  //在anaconda-ks.cfg文件里搜索包含size的内容不区分大小写
    

    Linux 下可以使用的通配符:
    注:find支持通配符匹配,grep支持正则表达式匹配

    * 匹配任意字符
    ? 匹配任意一个字符
    [] 匹配任意一个中括号内的字符
    举例:
    find /root -name "*" //搜索root目录下所有内容
    find /root -name "ab[cd]" //搜索root目录下名字叫做 abc 或者 abd的文件
    find /root -name "?b" //搜索root目录下名字只有两个字符并且是b结尾的文件
    

    相关文章

      网友评论

        本文标题:Linux系统学习之文件搜索命令(4)

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