文件查找和压缩

文件查找

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

      文件查找: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

相关推荐

  • N25第三周作业(用户组,和文本管理)

    列出当前系统 上所有已经登录用户的用户名,注意:同一个用户登录多次,则只显示一次即可. 列出最后登录到当前系统的用户相关信息. 命令who查看所有用户 , tail查看后几行 取出当前系统上被用户当作其默认shell的最多那个shell. 命令cut 分割 , -d 指定分隔符,-f指定字段 uniq 显示或忽略重复行信息   -c:显示并统计重复…

    Linux干货 2016-12-19
  • 条件测试与基础运算

    变量类型: 整形 数值型 字符型 byte boolen 单精度 双精度 变量种类: 环境变量– 对所有进程有效 本地变量– 仅对当前shell有效 局部变量– 仅在函数中的某一段有效 位置变量– $1,$2,$3,$4 特殊变量– $?,$0,$*,$@,$#,$$ 变量命名法则: 1.不能出现程…

    Linux干货 2017-04-16
  • Nginx 进阶 (ssl、fpm、rewrite、cache配置等)

    Nginx(与ssl结合配置https网站、rewrite,fastcgi配置详解) 前言 前面已经介绍过Nginx的一些基础概念,还有几个比较重要的模块:利用ssl给会话加密,利用rewrite功能灵活改写访问结果,以及利用fastcgi与php模块结合等等。 一、配置https网站 1、自建CA (1)生成私钥文件 mkdir -p /etc/pki/C…

    Linux干货 2016-12-26
  • 建立私有CA的方法

    建立私有CA的方法 建立私有CA的工具:     OpenCA     Openssl 证书申请及签署步骤:     1,生成申请请求:     2,RA核验;    &…

    Linux干货 2016-09-19
  • 图文演示Netmeeting的三大功能

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/153578     可能很多朋友对Netmeeting有一定认识,但我想真正用过的朋友应该不多,因为类似的软件太多太多了,所以Netmeet…

    Linux干货 2015-03-25
  • 哥是玩程序的

      下面一组有趣的Web示例,这些示例使用Web的一些很“土”控件做出一些很有趣的玩意儿。原来,编程是可以用来玩的,看看这些玩程序的人搞出的这些有意思的玩意,简直是玩得太有意思了。不过,请注意,这些东西只能使用Chrome打开,不然,你看不到相关的效果。 用滚动条做的时间 http://toki-woki.net/p/scroll-clock/,下…

    Linux干货 2015-04-01

评论列表(1条)

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

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