文件查找

  • locate : 非实时查找(数据库查找)

    数据库文件: /var/lib/mlocate/mlocate.db
    更新数据库命令: updatedb

    locate
    选项:
      -i : 不区分大小写
      -n N: 只查看前N个匹配的项目
      -r : 使用正则表达式


  • find : 实时查找

    find [option]... [查找路径] [查找条件] [处理动作]

    • 查找条件选项:
    • 指定搜索层级:
      -maxdepth level : 最大搜索目录深度,指定目录为第1级
      -mindepth level : 最小搜索目录深度
    • 根据文件名和inode查找:
      -name "文件名" : 支持通配符
      -name "文件名" : 忽略大小写
      -inum n: 按inode号查找
      -samefile name: 查找相同inode号的文件
      -links n : 链接数为n的文件
      -regex "PATTERN" : 使用正则匹配整个文件路径字符串,而不仅仅是文件名
    • 根据属主、属组查找:
      -user username : 查找属主为指定用户名的文件
      -group groupname : 查找属组为指定组的文件
      -uid ueserid : 查找属主为指定uid的文件
      -gid groupid : 查找属组为指定gid的文件
      -nouser : 查找没有属主的文件
      -nogroup : 查找没有属组的文件
    • 根据文件类型查找:
      -type type :
      f : 普通文件
      d : 目录文件
      l : 符号链接文件
      s : 套接字文件
      b : 块设备文件
      c : 字符设备文件
      p : 管道文件
    • 组合条件:
      -a : 与
      -o : 或
      -not,! : 非
    • 根据文件大小来查找:
      -size [+ | -]#UNIT
      单位: k,M,G,c(byte)
      #UNIT: (#-1,#)
      如: 6k 表示5-6k之间(不包括5k和6k)
      -#UNIT: (0,#-1)
      如: -6k 表示0-5k之间(不包括6k)
      +#UNIT: (#,∞)
      如: +6k 表示(6k-无限)(不包括6k)
    • 根据时间戳查找:
      以'天'为单位:
      -atime [+ | -]n,
      -mtime,-ctime
      n: [n,+1]
      +n: [n+1,∞]
      -n: [0,n]
      以'分钟'单位:
      -amin , -mmin , -cmin
    • 根据权限查找:
      -perm [/ | -]mode
      mode : 精确权限匹配
      /mode : 任何一类(u,g,o)对象的权限中只要有一位能匹配即可(或关系)
      -mode : 每一类对象都必须拥有指定的权限(与权限)
      0 : 表示不关注

    • 处理动作
      -print : 默认的动作,打印结果至屏幕
      -ls : 类似于'ls -l'命令
      -delete : 删除查找到的文件(慎用!)
      -fls file : 将查找到的所有文件的长格式信息保存至指定文件中
      -ok COMMAND {} \; : 对查找到的每个文件执行由COMMAND指定的命令(交互式)
      -exec COMMAND {} \; : 对查找到的每个文件执行由COMMAND指定的命令(非交互,直接执行)
      {} : 引用查找到的文件名称本身
      find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

  • 压缩、解压缩以及归档工具

  • gzip/gunzip

    • gzip [option]... file
        -d : 解压缩,相当于gunzip
        -c : 将压缩或解压缩的结果输出至标准输出
        -# : 1-9,指定压缩比,值约到压缩比越大
  • bzip2/bunzip2

    • bzip2 [option]... file
        -k : 保留源文件
        -d : 解压缩
        -# : 1-9,压缩比,默认为9
  • xz/unxz

    • xz [option]... file
        -k : 保留源文件
        -d : 解压缩
        -# : 1-9,压缩比,默认为6
  • tar

    • tar [option]...
      选项:
        -c : 建立新的备份文件
        -f : 备份文件
        -v : 显示过程
        -x : 从备份文件中还原文件
        -z,-j,-J : 备份后通过gzip,bzip2,xz压缩
        -C : 指定解压缩的目录
    • 例:
      • (1)创建归档并使用gzip压缩
          tar -zcvf file.tar.gz file
      • (2)查看tar包内的文件
          tar -ztvf file.tar.gz
      • (3)解压缩到指定目录
          tar -zxvf file.tat.gz -C /root

  • cpio : 复制文件从或到归档

    • cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件
      • cpio [选项] > 文件名或者设备名
      • cpio [选项] < 文件名或者设备名
      • 选项:
         -o : 将文件拷贝打包成文件或者将文件输出到设备上
         -i : 解包,将打包文件解压或将设备上的备份还原到系统
         -t : 预览,查看文件内容或者输出到设备上的文件内容
         -v : 显示过程
         -d : 解包生成目录,在cpio还原时,自动建立目录
    • 例:
      • (1)将etc目录备份
         find ./etc -print | cpio -ov >etc.cpio
      • (2)内容预览
         cpio -tv < etc.cpio
      • (3)解包文件
         cpio -idv < etc.cpio