文件查找工具

  • locate
  • find

    locate: 查询系统预建的文件索引数据库

         1. /var/lib/mlocate/mlocate.db
        2.因为依赖于事先构建的索引,而索引是系统在闲时自动进行的,管理员需要手动更新(updatedb)。
    locate的特点:查找速度快
           模糊查找
           非实时查找
           搜索的是文件的全路径,不仅仅是文件名
           可能只搜索用户具备读取和执行权限的目录
    基本语法:
      -i :不区分大小写的搜索
      -n :N 只列举前N个匹配项
      -r :使用基本正则表达式
    示例
      搜索名称或路径中带有“conf”的文件
        locate conf
      使用Regex来搜索以“.conf”结尾的文件
        locate -r ‘.conf$’
    由于locate是搜索系统索引,在一般生产环境中使用较少。

    find 实时查找工具

    find特点:
      1.查找速度快
      2.精确查找
      3.实时查找
      4.可能只搜索用户具备读取和执行权限的目录
    基本语法:
      find 【option】...【查找路径】【查找条件】【处理动作】

  • 查找条件
      a.指搜索层级
      -maxdepth level 最大搜索目录深度
      -mindepth level 最小搜索目录深度
      b.根据文件名和inode查找:
      -name “文件名称”
      -iname "文件名称":不区分大小写字母
      -inum n :按inode号查找
      -samefile name :相同inode号的文件
      -links n :链接数为n的文件
      c.根据属主,属组查找:
      -user username:查找属主为指定UID的文件
      -group grpname:查找属组文指定GID的文件
      -uid userid:查找数主为指定UID的文件
      -gid groupid:查找属组为指定GID的文件
      -nouser :查找没有属主的文件
      -nogroup :查找没有属组的文件
      d.根据文件类型查找
      -type type
        f:普通文件
       d: 目录文件
       l:符号链接文件
       s:套接字文件
       b:块设备文件
       c:字符设备文件
       p:管道文件
       -empty :查找空文件和目录
      e.组合条件
       与 : -a
       或 : -o
       非 : -not !
      f.根据文件大小来查找文件
       -size 【+|-】
      g.根据时间查找
    Linux下文件查找工具介绍_第1张图片
      h.根据权限查找
       -perm [/|-]MODE
       MODE:精确权限匹配
       /MODE:任何一类(u,g,o)对象中只要有一位匹配即可 或关系
       -MODE:每一位对象都必须同时匹配 与关系

    处理动作

      -print :默认的处理动作,屏幕打印输出
      -ls : 列举出匹配的文件
      -delete :删除操作,删除过程不提示比较危险
      -fls file :查找到的文件保存到文件中,类似于重定向
      -exec command {} \;:对查找到的文件执行command 指定的命令 ,对于使用这种命令一定要记得后面加 \;
      {} :用于引用查找到文件的文件名称自身

    参数替换xargs

    由于很多命令不支持管道|来传递参数,xatgs用于产生某个命令的参数。
    当然也有很多命令不能接受过多的参数,命令执行可能会失败,xargs都可以解决
    例子:
       ls | xargs rm :删除当前目录下大量的文件
      echo f{1..52222220} | xargs touch :创建大量的文件
      find -type f -name “*.txt” -print0 | xargs -0 rm 以字符nul分隔