文件查找工具

  • 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.根据时间查找   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分隔