设为首页 收藏本站
查看: 587|回复: 0

[经验分享] Linux中的文件查找和解压缩

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-17 09:54:05 | 显示全部楼层 |阅读模式
概述:
     本章将主要介绍在Linux中怎样查找文件和解压缩。需要我们掌握的知识有:locate和find 命令的使用,以及如何使用压缩和解压缩工具。

一、Linux文件查找
     在文件系统上常常需要根据文件的各种属性去查找符合条件的文件,此前使用的grep,egrep,fgrep属于文本过滤、文本搜索工具;而文件查找工具有两个,locate和find
    1.文件查找分为两类:
        □实时查找:偏历所有文件进行条件匹配       find
        □非实时查找(数据库查找):根据索引查找  locate
    2.locate
        □查询系统上预建的文件索引数据库
              /var/lib/mlocate/mlocate.db
       依赖于事先构建的索引
            索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库使用 updatedb 命令
       索引构建过程需要遍历整个根文件系统,极消耗资源
       工作特点:
              查找速度快
              模糊查找
              非实时查找
              搜索的是文件的全路径,不仅仅是文件名
              可能只搜索用户具备读取和执行权限的目录
    □locate KEYWORD
       有用的选项
              -i执行区分大小写的搜索
              -n N只列举前N个匹配项目
       示例:
           locate foo            搜索名称或路径中带有“foo”的文件
           locate -r ‘\.foo$   使用Regex来搜索以“.foo”结尾的文件
二、find
     1.实时查找工具,通过遍历指定路径完成文件查找;
       工作特点:
            查找速度略慢
            精确查找
            实时查找
            可能只搜索用户具备读取和执行权限的目录
   2.语法:
       find [OPTION]... [查找路径] [查找条件] [处理动作]
       查找路径:指定具体目标路径;默认为当前目录
       查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
       处理动作:对符合条件的文件做操作,默认输出至屏幕
   3.查找条件:
      □根据文件名和inode查找:
           -name "文件名称":支持使用glob   *, ?, [], [^] 文件名称一定加引号!
           -iname"文件名称":不区分字母大小写
           -inumn 按inode号查找
           -samefilename 相同inode号的文件
           -links n 链接数为n的文件
           -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
     □根据属主、属组查找:
           -user USERNAME:查找属主为指定用户(UID)的文件
           -group GRPNAME: 查找属组为指定组(GID)的文件
           -uid UID:查找属主为指定的UID号的文件
           -gid GID:查找属组为指定的GID号的文件
           -nouser:查找没有属主的文件
           -nogroup:查找没有属组的文件
     □根据文件类型查找:
           -type TYPE:  如: find /etc/ -type f
              f: 普通文件
              d: 目录文件
              l: 符号链接文件
              s:套接字文件
              b: 块设备文件
              c: 字符设备文件
              p: 管道文件
     □组合条件:
             与:-a
             或:-o
             非:-not, !
        德·摩根定律:
             (非P) 或(非Q)= 非(P 且Q)
             (非P) 且(非Q) = 非(P 或Q)
      示例:
          !A -a !B = !(A -o B)
          !A -o !B = !(A -a B)
find示例:
    find -name snow.png    搜索名为snow.png的文件
        find -iname snow.png   不分大小写地搜索名为snow.png、Snow.png、SNOW.PNG等等的文件
        find / -name “*.txt”  搜索根目录下所有以.txt结尾的文件
        find /var –name “*log*”
        find -userjoe -group joe    搜索被用户joe 以及组群joe所拥有的文件
        找出/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” -print

   □根据文件大小来查找:
         -size [+|-] #UNIT  如:find /etc/ -size 6k
       常用单位:k, M, G
            注意:这里这里的区间,包含和不包含的关系。
            -#UNIT:[0,#-1]    如:-6k 表示[0,5k]
            +#UNIT:(#,∞)     如:+6k 表示(6k,∞)
   □根据时间戳:
         以“天”为单位; 如: find  /etc/ -atime 7
          -atime [+|-]#,
               #: [#,#+1)   如:7 表示[7,8)
              +#: [#+1,∞] 如:    +7 表示 [8,∞)
              -#: [0,#)     如:   -7 表示 [0,7)
          -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才会匹配
     4.处理动作
        -print:默认的处理动作,显示至屏幕;
        -ls:类似于对查找到的文件执行“ls -l”命令
        -delete:删除查找到的文件;(不建议使用)
        -fls file:查找到的所有文件的长格式信息保存至指定文件中(相当于重定向)
        -ok COMMAND {} \;(固定格式) 对查找到的每个文件执行由COMMAND指定的命令;
1471338275895358.jpg
             对于每个文件执行命令之前,都会交互式要求用户确认(-exec 不用确认,直接操作)
     -exec COMMAND {} \;对查找到的每个文件执行由COMMAND指定的命令
        {}: 用于引用查找到的文件名称自身
        find 传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
        有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题
              find | xargs COMMAND
示例:
   find -name “*.conf” -exec cp {} {}.org \; (一定要注意格式,后面加斜杠和分号)
         备份配置文件,添加.orig这个扩展名
     find /tmp -ctime +3 -userjoe -ok rm {} \;
         提示删除存在时间超过3天以上的joe的临时文件
     find ~ -perm -002 -exec chmod o-w {} \;
         在你的主目录中寻找可被其它用户写入的文件
     find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
           找到/data 目录下所有文件名以.sh后缀,且权限为644的普通文件,然后把权限改为755
     find /home –type d -ls


        Linux系统解压缩
概述
  本章将介绍Linux系统中的压缩和解压缩的工具,以及归档工具(tar,cpio)
      compress/uncompress: 对应 .Z 结尾的压缩格式文件;
      gzip/gunzip:          其对应的是 .gz 结尾的压缩格式文件;
      bzip2/bunzip2:       其对应的是 .bz2 结尾的压缩格式文件;
      xz/unxz:               其对应的是 .xz 结尾的压缩格式文件;
      zip/unzip              其对应的是 .zip 结尾的压缩格式文件

一、compress和uncompress
     □语法:compress [-dfvcVr] [-b maxbits] [file ...]
              -d: 解压缩,相当于 (可以配合 -c 保留压缩文件)
              -c: 结果输出至标准输出,不删除原文件
              -v: 显示详情
     uncompress解压缩
     zcat file.Z > file

二、gzip和gunzip(使用最多)
     □语法:gzip[OPTION]... FILE ...
            -d: 解压缩,相当于gunzip
1471346073415932.jpg
            -c: 将压缩或解压缩的结果输出至标准输出
1471346059644097.jpg
            -#:1-9,指定压缩比,值越大压缩比越大  如:gzip -9 m
     zcat:不显式解压缩的前提下查看文本文件内容
    实例:
           gzip -c messages > messages.gz
           gzip -c -d messages.gz > messages
           zcatmessages.gz > messages

三、bzip2/bunzip2/bzcat
   □语法:bzip2 [OPTION]... FILE ...
           -k: keep, 保留原文件
           -d:解压缩
           -#:1-9,压缩比,默认为6
     bzcat:不显式解压缩的前提下查看文本文件内容

四、xz/unxz/zxcat(压缩比最强)
     □语法:xz[OPTION]... FILE ...
           -k: keep, 保留原文件
           -d:解压缩
           -#:1-9,压缩比,默认为6
     xzcat: 不显式解压缩的前提下查看文本文件内容

五、zip/unzip
     语法:zip zipfile.zip  /path/to/somefile
     □打包压缩
           zip –r sysconfigsysconfig/
1471347412365221.jpg
     解包解压缩
           unzip sysconfig.zip  (解压到当前目录中)
           cat /var/log/messages | zip message -(代表前面命令的标准输出)
           unzip -p message > message
六、tar
    □语法:tar [OPTION]...
    (1) 创建归档
            tar -c -f /PATH/TO/SOMEFILE.tar FILE...
            tar cf/PATH/TO/SOMEFILE.tar FILE...
    (2) 查看归档文件中的文件列表
            tar -t -f /PATH/TO/SOMEFILE.tar
    (3) 展开归档
            tar -x -f /PATH/TO/SOMEFILE.tar
            tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/
    结合压缩工具实现:归档并压缩
            -j: bzip2, -z: gzip, -J: xz
七、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–iv <etc.cpio
            cpio–idv< etc.cpio



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-259095-1-1.html 上篇帖子: Linux 入门之文件的压缩和归档 下篇帖子: 文件查找find与压缩 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表