美文网首页
文件查找及压缩工具

文件查找及压缩工具

作者: JevonWei | 来源:发表于2017-06-15 20:49 被阅读0次

    文件查找

    locate,模糊查找,非实时查找(数据库查找)
    find:实时查找

    locate

    • 查询系统上预建的文件索引数据库
      /var/lib/mlocate/mlocate.db,此数据库每天更新一次,也可手动更新数据库(updatedb)
    • 依赖于事先构建的索引
      索引的构建是在系统较为空闲时自动进行( 周期性 任务),管理员手动更新数据库(updatedb)
    • 索引构建过程需要遍历整个根文件系统,极消耗资源
    • 工作特点:
    •  查找速度 快
    •  模糊查找
    •  非实时查找
    •  搜索的是文件的全路径,不仅仅是文件名
    •  可能只搜索用户具备读取和执行权限的目录
    
    • locate命令:

    locate KEYWORD

    可用的选项
        • -i 不区分大小写的搜索
        • -n N 只列举前N 个匹配项目
    

    locate conf
    • 搜索名称或路径中带有“conf ”的文件

    locate -r ‘.conf$’
    • 使用Regex 来搜索以“.conf ”结尾的文件

    find

    实时查找工具,通过遍历指定路径完成文件查找
    工作特点:

    • 查找速度略慢
    • 精确查找
    • 实时查找
    • 可能只搜索用户具备读取和执行权限的目录

    语法:
    find [OPTION]... [ 查找路径] [ 查找条件] [ 处理动作]

    1. 查找路径:指定具体目标路径;默认为当前目录
    2. 查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
    3. 处理动作:对符合条件的文件做操作,默认输出至屏幕
    • 查找条件:

    指定搜索层级

    -maxdepth level  最大搜索目录深度, 指定目录为第1级 级
    -mindepth level  最大搜索目录深度
    

    根据文件名和inode 查找:

    -name " 文件名称" :支持使用glob
        *, ?, [], [^],通配符需要加“ ”
    -iname " 文件名称" :不区分字母大小写
    -inum n 按inode 号查找
    -samefile name 相同inode 号的文件
    -links n 链接数为n 的文件
    -regex "PATTERN" :以PATTERN 匹配整个文件路径字符串,而不仅仅是文件名称
    

    查找.sh结尾的文件
    • 根据属主、属组查找:

      -user USERNAME :查找属主为指定用户(UID) 的文件
      -group GRPNAME: 查找属组为指定组(GID) 的文件
      -uid UserID :查找属主为指定的UID 号的文件
      -gid GroupID :查找属组为指定的GID 号的文件
      -nouser :查找没有属主的文件
      -nogroup :查找没有属组的文件

    • 根据文件类型查找:

    -type TYPE:
        • f:  普通文件
        • d:  目录文件
        • l:  符号链接文件
        • s :套接字文件
        • b:  块设备文件
        • c:  字符设备文件
        • p: 管道文件
    
    • 组合条件: 优先级顺序:not>a>o

    与:-a
    或:-o
    非:-not, !
    
    • 德· 摩根定律:

    (非 A) 或 (非 B) =  非(A 且 B)
    (非 A) 且 (非 B) =  非(A 或 B)
    

    示例:
    !A -a !B = !(A -o B)
    !A -o !B = !(A -a B)

    • find示例:

    find -user joe -not -group joe
    find -user joe -o -user jane
    find -not \( -user joe -o -user jane \)
    find / -user joe -o -uid 500
    找出/tmp 目录下,属主不是root ,且文件名不以f开头的文件
        find /tmp \( -not -user root -a -not -name 'f*' \) -ls  
        find /tmp -not \( -user root -o -name 'f*' \) –ls
    
    • 排除目录

      示例:查找/etc/ 下,除/etc/sane.d 目录的其它所有.conf后缀的文件
      find /etc -path ‘/etc/sane.d’ -a -prune -o -name “.conf”
      find /etc (–path ‘/etc/sane.c’ –o –path ’/etc/fonts’ ) -a -prune –o name “
      .conf”


    • 根据文件大小来查找
    -size [+|-]#UNIT
        常用单位:k, M, G ,c (byte) 
        #UNIT: (#-1, #]
            如:6k  表示(5k,6k]
        -#UNIT :[0,#-1]
            如:-6k  表示[0,5k]
        +#UNIT :(#, ∞ )
            如:+6k  表示(6k ,∞ )
    


    查找大于1M小于10M的文件
    • 根据时间戳:
    以“天”为单位;
        -atime [+|-]#,
            #: [#,#+1)
            +#: [#+1, ∞ ]
            -#: [0,#)
        -mtime
        -ctime
    以“分钟”为单位:
        -amin
        -mmin
        -cmin
    
    • 根据权限查找:
    • -perm [/|-]MODE

    MODE: 精确权限匹配
    /MODE :任何一类(u,g,o) 对象的权限中只要能一位匹配即可,或关系,+ 从centos7 开始淘汰
    -MODE :每一类对象都必须同时拥有指定权限,与关系0表示不关注

    • find -perm 755 会匹配权限模式恰好是755的文件
    • 只要当任意人有写权限时,find -perm /222 就会匹配
    • 只有当每个人都有写权限时,find -perm -222 才会匹配
    • 只有当其它人(other )有写权限时,find -perm -002才会匹配
    • 处理动作:
    -print :默认的处理动作,显示至屏幕
    -ls :类似于对查找到的文件执行“ls -l” 命令
    -delete :删除查找到的文件
    -fls file :查找到的所有文件的长格式信息保存至指定文件中
    -ok COMMAND {} \;  对查找到的每个文件执行由 COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
    -exec COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令
    {}:  用于引用查找到的文件名称自身   
    


    find 传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

    xargs

    参数替换xargs

    由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了xargs 命令
    xargs 用于产生 某个命令的参数,xargs入可以读入 stdin 的数据,并且以空格符或回车符将stdin的数据分隔 成为arguments
    注意:文件名或者是其他意义的名词内含有空格符 的情况
    有些命令不能接受过多参数,命令执行 可能会失败,xargs可以解决
    示例:

    ls f* |xargs rm
    find /sbin -perm +700 |ls -l   这个命令是错误的
    find /sbin -perm +7000 | xargs ls –l
    

    find 和xargs 格式:find | xargs COMMAND

    • find示例
    find -name “*.conf” -exec cp {} {}.orig \;
         备份配置文件,添加.orig 这个扩展名
    find /tmp -ctime +3 -user joe -ok rm {} \;
         提示删除存在时间超过3天以上的joe 的临时文件
    find ~ -perm -002 -exec chmod o-w {} \;
        在你的主目录中寻找可被其它用户写入的文件
    find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
    find /home –type d -ls
    

    压缩、解压缩及归档工具

    file-roller 应用在图形界面
    compress/uncompress: .Z
    gzip/gunzip: .gz
    bzip2/bunzip2: .bz2
    xz/unxz: .xz
    zip/unzip
    tar
    cpio

    • compress/uncompress
    compress [-dfvcVr] [-b maxbits] [file ...]
        -d:  解压缩,相当于uncompress
        -c:  结果输出至标准输出, 不删除原文件
        -v:  显示详情
    uncompress 解压缩
    zcat file.Z >file
    


    • gzip/gunzip
    gzip [OPTION]... FILE ...    压缩同时删除原文件
        -d:  解压缩,相当于gunzip
        -c:  将压缩或解压缩的结果输出至标准输出
        -# :1-9 ,指定压缩比,值越大压缩比越大
    zcat :不显式解压缩的前提下查看文本文件内容
    

    实例:

    gzip -c messages >messages.gz
    gzip -c -d messages.gz > messages
    zcat messages.gz > messages
    
    • bzip2/bunzip2/bzcat
    bzip2 [OPTION]... FILE ...
        -k: keep,  保留原文件
        -d :解压缩
        -# :1-9 ,压缩比,默认为6
    bzcat :不显式解压缩的前提下查看文本文件内容
    
    • xz/unxz/xzcat
    xz [OPTION]... FILE ...
        -k: keep,  保留原文件
        -d :解压缩
        -# :1-9 ,压缩比,默认为6
    xzcat:  不显式解压缩的前提下查看文本文件内容
    
    • zip/unzip
    打包压缩
        zip –r app/sysconfig /etc/sysconfig/    将/etc/sysconfig 目录打包压缩为app/sysconfig
    
    解包解压缩
    unzip sysconfig.zip
    cat /var/log/messages | zip messages -
    unzip -p message > message
    

    tar工具

    Tar (Tape ARchive ,磁带归档的 缩写)

    tar [OPTION]...
        -c: 建立压缩档案
        -C 解压到指定文件
        -x:解压
        -t:查看内容
        -r:向压缩归档文件末尾追加文件
        -u:更新原压缩包中的文件-c:打包
        -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。    这个参数是必须的
    
        -z:有gzip属性的
        -j:有bz2属性的
        -J:xz属性
        -Z:有compress属性的
        -v:显示所有过程
        -O:将文件解开到标准输出
    
    1. 创建归档
      tar -c -f /PATH/TO/SOMEFILE.tar FILE...
    2. 追加文件至归档: 注:不支持对压缩文件追加
      tar -r -f /PATH/TO/SOMEFILE.tar FILE...
    3. 查看归档文件中的文件列表
      tar -t -f /PATH/TO/SOMEFILE.tar
    4. 展开归档
      tar -x -f /PATH/TO/SOMEFILE.tar
      tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/
    5. 结合压缩工具实现:归档并压缩
      -j: bzip2, -z: gzip, -J: xz

    将文件解压缩到/tmp下

    • -T 选项指定输入文件列表, X 选项指定包含要排除的文件列表
    将打包的文件写入文件列表,打包时读取文件列表    
    tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
    
    • 分割大的tar 文件为多份小文件:
    split –b Size –d tar-file-name prefix-name    
    split -b 1M –d mybackup.tgz mybackup-parts
    split -b 1M mybackup.tgz mybackup-parts
    
    • 将多个小文件合并为一个大文件
    cat mybackup-parts* > mybackup.tar.gz
    

    cpio

    cpio命令主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件
    cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio或者“.tar” 结尾的文件。

    cpio [ 选项] >  文件名或者设备名    
    cpio [ 选项] <  文件名或者设备名    
        选项
          -o  将文件拷贝打包成文件或者将文件输出到设备上
            -i  解包,将打包文件解压或将设备上的备份还原到系统
            -t  预览,查看文件内容或者输出到设备上的文件内容
            -v  显示打包过程中的文件名称。
            -d  解包生成目录,在cpio 还原时,自动的建立目录
            -c  一种较新的存储方式
    

    示例:

    将etc 目录备份:   
        find ./etc -print |cpio -ov >etc.cpio   
    内容预览   
        cpio –tv < etc.cpio   
    要解包文件   
        cpio –idv < etc.cpio

    相关文章

      网友评论

          本文标题:文件查找及压缩工具

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