文件查找和压缩

文件查找

    在文件系统上查找符合条件的文件;

      文件查找:locate, find

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

       实时查找:find

locate

      查询系统上预建的文件索引数据库   /var/lib/mlocate/mlocate.db

      依赖于事先构建的索引;

      索引的构建是在系统较为空闲时自动进行( 周期性任务) ;管理员手动更新数据库(updatedb); ;

      索引构建过程需要遍历整个根文件系统,极消耗资源;

      工作特点:查找速度快;模糊查找;非实时查找

      搜索的是文件的全路径,不仅仅是文件名

      可能只搜索用户具备读取和执行权限的目录

 locate KEYWORD

有用的选项

         • -i 执行区分大小写的搜索

         • -n X 只列举前X 个匹配项目

     例如:locate foo   搜索名称或路径中带有“foo ”的文件

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

blob.png

    find工具

      实时查找工具,通过遍历指定路径完成文件查找;

         工作特点:

                    查找速度略慢

                    精确查找

                    实时查找

                    可能只搜索用户具备读取和执行权限的目录

         语法:

               find [OPTION]… [ 查找路径] [ 查找条件] [ 处理动作]

              查找路径:指定具体目标路径;默认为当前目录

              查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

              处理动作:对符合条件的文件做操作,默认输出至屏幕

    find查找条件

          根据文件名和inode 查找:

                -name " 文件名称" :支持使用glob       *, ?, [], [^]

blob.png

                -iname "文件名称":不区分字母大小写

                -inum n 按inode 号查找

blob.png

                -samefile name 相同inode 号的文件

                -links n 链接数为n 的文件

                -regex "PATTERN":以PATTERN 匹配整个文件路径字符串,而不仅仅是文件名称

    根据属主、属组查找

                -user USERNAME :查找属主为指定用户(UID) 的文件

blob.png

                -group GRPNAME: 查找属组为指定组(GID) 的文件

                -uid UserID :查找属主为指定的UID 号的文件

                -gid GroupID :查找属组为指定的GID 号的文件

                -nouser :查找没有属主的文件

blob.png

                -nogroup查找没有属组的文件

  根据文件类型查找

             -type TYPE:

                          f: 普通文件

                          d: 目录文件

                          l: 符号链接文件

                          s:套接字文件

                          b: 块设备文件

                          c: 字符设备文件

                          p: 管道文件

blob.png

  查找当前路径下连接数为2 的普通文件

      组合条件

                   与:-a

                   或:-o

                   非:-not, !

      德·摩根定律:

     非(P 且 Q) = (非 P) 或 (非 Q)

     非(P 或 Q) = (非 P) 且 (非 Q)

     !A -a !B = !(A -o B) 非A 与 非B=非(A 或 B)

     !A -o !B = !(A -a B) 非A 或 非B=非(A 与 B)

find实例:找出/tmp 目录下,属主不是root ,且文件名不是fstab 的文件

find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \( -user root -o -name 'fstab' \) -ls

blob.png

搜索结果并没有这种文件

排除目录:

find /etc -path ‘/etc/sane.d’ -a -prune -o -name *.conf -print

blob.png

      根据文件大小来查找

              -size [+|-]#UNIT

              常用单位:k, M, G

              #UNIT: (#-1, #] ,如:20k:大于19k,小于等于20k

              -#UNIT :[0,#-1], 如:-20k:大于等于0k,小于等于19k

              +#UNIT :(#, ∞ ), 如:+20k:大于20k

例:find -size 1024k 实际上是(1023k,1024k)

     find -size 1M 实际上是查找的0<x< =1M的文件

    根据时间戳

         以“天”为单位;

               -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指定的命令,直接执行,不询问yes or no

        {}: 用于引用查找到的文件名称自身

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

         有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题      find | xargs COMMAND

   find实例:

          1 find -name “*.conf” -exec cp {} {}.org \;

            • 备份配置文件,添加.orig 这个扩展名

          2 find /tmp -ctime +3 -user joe -ok rm {} \;

            • 提示删除存在时间超过3天以上的joe 的临时文件

          3 find ~ -perm -002 -exec chmod o-w {} \;

            • 在你的主目录中寻找可被其它用户写入的文件

          4 find /data –type f -perm 644 -name *.sh –exec chmod 755 {} \;

            ·在date目录下搜索权限是644,后缀为.sh的普通文件,并把权限改成755

          5 find /home –type d -ls

           · 搜索家目录下的文件 只列出文件夹名,并显示其属性


 


find练习

1、查找/var 目录下属主为root ,且属组为mail 的所有文件

blob.png

 2 、查找/var 目录下不属于root 、lp 、gdm 的所有文件

blob.png

 3 、查找/var 目录下最近一周内其内容修改过,同时属主不为root ,也不是postfix 的文件

[root@localhost ~]# find /var -mtime -7 -not -user root -a -not -user postfix -ls

blob.png

[root@localhost ~]# find /var -mtime -7 -not \( -user root -o -user postfix \) -ls

blob.png

 4 、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

[root@localhost ~]# find / \( -atime -7 -nouser -o -nogroup \) -ls

 5 、查找/etc 目录下大于1M 且类型为普通文件的所有文件

blob.png

 6 、查找/etc 目录下所有用户都没有写权限的文件

blob.png

 7 、查找/etc 目录下至少有一类用户没有执行权限的文件

[root@localhost ~]# find /etc/ -not -perm /111 -ls

         部分搜索结果图:

blob.png

 8 、查找/etc/init.d 目录下,所有用户都有执行权限,且其它用户有写权限的文件

[root@localhost ~]# find /etc/init.d/ -perm -111 -a -perm /002
[root@localhost ~]# find /etc/init.d/ -perm -113



Gnome搜索工具

        位置-> 搜索文件……

        图形化搜索工具,可搜索:

                                    • 命令

                                    • 内容

                                    • 用户/ 组群

                                    • 大小

                                    • 修改时间

压缩、解压缩、归档工具

      file-roller图形化工具    图形界面,输入命令file-roller

blob.png

    compress/uncompress工具

     compress [-dfvcVr] [-b maxbits] [file …]

             -d: 解压缩

             -c: 结果输出至标准输出, 不删除原文件

             -v: 显示详情

需要重定向

        uncompress 解压缩  zcat file.Z >file   重定向

   gzip/gunzip工具

       gzip [OPTION]… FILE …

              -d: 解压缩,相当于gunzip

              -c: 将压缩或解压缩的结果输出至标准输出

              -# :1-9 ,指定压缩比,值越大压缩比越大

           zcat :不显式解压缩的前提下查看文本文件内容

           实例:

                 gzip -c messages >messages.gz

blob.png

                 gzip -c -d messages.gz > messages

blob.png

                 zcat messages.gz > messages

      效果跟  gzip -c -d messages.gz > messages一样

bzip2/bunzip2/bzcat工具

       bzip2 [OPTION]… FILE …

             -k: keep, 保留原文件

             -d :解压缩

             -# :1-9 ,压缩比,默认为6

         bzcat:不显示解压缩的前提下查看文本文件内容,显示解压缩的过程

blob.png

   xz/unxz/xzcat工具

           xz [OPTION]… FILE …

                   -k: keep, 保留原文件;

                   -d :解压缩

                   -# :1-9 ,压缩比,默认为6;

             xzcat: 不显式解压缩的前提下查看文本文件内容;

   zip/unzip工具

          打包压缩

                zip –r sysconfig sysconfig/   压缩目录,要加上-r

blob.png

            解包解压缩

                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…

[root@localhost ~]# tar zcfv /testdir/etc.tar.gz /etc/

blob.png

打包并压缩/etc/目录到/testdir目录下,显示过程

          (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

[root@localhost ~]# tar Jcfv /testdir/etc.tar.xz /etc/

blob.png

压缩比更高,图为三种压缩的对比图

[root@localhost ~]# tar tvf /testdir/etc.tar.gz

解压缩前预览文件,默认解压到当前目录下 ;-C 解压到指定目录下

 cpio工具

    cpio:cp复制  i:input  o:output

       复制 :    从某处复制,或者复制到某个文件

     cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio” 或者“.tar” 结尾的文件。

     cpio [ 选项] > 文件名或者设备名

     cpio [ 选项] < 文件名或者设备名

             选项:

                -o 将文件拷贝打包成文件或者将文件输出到设备上

                -i 解包,将打包文件解压或将设备上的备份还原到系统

                -t 预览,查看文件内容或者输出到设备上的文件内容

                -v 显示打包过程中的文件名称。

                -d 解包生成目录,在cpio 还原时,自动的建立目录

                -c 一种较新的存储方式

     实例

        将etc 目录备份:

  find ./etc -print |cpio -ov >etc.cpio

blob.png

 内容预览

 cpio –tv < etc.cpio

blob.png

部分文件截图

        要解包文件  

  cpio –iv <etc.cpio
  cpio –idv < etc.cpio

原创文章,作者:旧城以西,如若转载,请注明出处:http://www.178linux.com/35990

(0)
旧城以西旧城以西
上一篇 2016-08-18
下一篇 2016-08-18

相关推荐

  • 网络模型知识点概括

       网络模型分层 应用层 网络进程访问表示层 数据表示会话层 主机间通信传输层 端到端连接网络层 数据传输   数据链路层 访问介质物理层 物理线缆二进制封包与解封从下至上封包加包头通过上层协议传给对方机器,对方机器接受后需要从上至下拆解包头,这个过程叫解封三种通讯模式单播广播组播局域网:由服务器-》交换机-》pc …

    Linux干货 2017-05-02
  • find命令详解

    find命令是用来在给定的目录下查找符合给定条件的文件   find [OPTIONS] [查找起始路径] [查找条件] [处理动作]   一、OPTIONS参数     -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了   二、查找路径     就是个目录路径,相对和绝对都可以。   三、查找条件     (一)、根据名称查找       -na…

    Linux干货 2016-09-19
  • tomcat基础进阶

                        tomcat基础进阶 前言 Tomcat Architecture Tomcat Installation Tomcat…

    Linux干货 2016-04-22
  • 链接分析算法之:HillTop算法

       Hilltop算法是由Krishna Baharat 在2000年左右研究的,于2001年申请专利,但是有很多人以为Hilltop算法是由谷歌研究的。只不过是Krishna Baharat 后来加入了Google成为了一名核心工程师,然后授权给Google使用的。     &nbsp…

    大数据运维 2015-04-08
  • MHA

    1.关于MHA MHA是一款开源的mysql的高可用程序,它为mysql主从复制架构提供了automating master failover功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其他从节点获取额外的信息来避免不一致性的问题。MHA还提供了master节点的在线切换…

    2016-11-26
  • redis-cli的一些有趣也很有用的功能

    redis-cli我们最常用的三个参数就是-h、-p、-a选项,分配用来指定连接的redis-server的host、port和登录密码。通过redis-cli –help发现,redis-cli还提供了其他很多的参数和功能。 1)-x-x选项从标准输入(stdin)读取最后一个参数。 比如从管道中读取输入: echo -en &quot…

    Linux干货 2016-04-13

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 10:43

    总结的很详细,find命令是我们以后笔试中常出现的考点,需要我们多加练习,能进行熟练运用。