• Linux入门——文件查找与压缩


      GNU Linux操作系统的哲学思想之一即是一切皆是文件,因此使用必要的手段对文件进行搜索、匹配、处理、压缩解压,以实现快速定位、快速处置是十分必要的。

       文件的搜索查找底层原理分为两类:实时的、非实时的。其中非实时的文件查找是基于数据库的,而实时查找则是基于查找条件对文件系统上的所有文件进行搜索、匹配,且是穷尽查找。

    非实时查找的代表命令是locate;实时查找的代表是find命令。

    查找

    Locate

    查询系统上预建的文件索引数据库

      /var/lib/mlocate/mlocate.db

    依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库(updatedb);因为索引构建过程需要遍历整个根文件系统,极消耗资源

    工作特点:查找速度快;模糊查找;非实时查找;搜索的是文件的全路径,不仅仅是文件名;可能只搜索用户具备读取和执行权限的目录

    Locate 选项 文件

      -i不区分大小写的搜索

      -n N只列举前N个匹配项目

      -r 使用正则表达式

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

    asd

    Find

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

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

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

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

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

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

    查找条件

    find  查找路径

       -mindepth N 最小搜索深度

             -maxdepth N 最大搜索深度

             -mindepth N -maxdepth N  只搜索指定深度

             -name 以名称为搜索条件 默认精确查找

                                "*name*"   模糊查找

             -iname 以名称为搜索条件并忽略大小写

             -inum inode号 以inode号为查找条件

             -samefile file1 找出与file1 inode相同的文件

             -links n 找到硬链接数为n的文件

             -regextype posix-extended -regex '/app/.(r..t)...\1er'  ( 正则部分要用引号引起来,同时要表示文件的完整路径,搜索当前目录时,用./,搜索指定目录时如/app,则用/app/....)

    根据属主、属组查找

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

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

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

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

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

             -nogroup:查找没有属组的文件

    根据文件类型查找

             -type

                       f: 普通文件

                       d: 目录文件

                       l: 符号链接文件

                       s:套接字文件

                       b: 块设备文件

                       c: 字符设备文件

                      p: 管道文件

    例:find /app -path '/app/other' -a -prune -o -name "*test*"

    根据文件大小来查找:

    根据时间戳:

    根据权限查找:

    处理动作

                       -ls 查找的结果显示详细信息

                       -delete 将查找的结果删除,不交互

    练习:•

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

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

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

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

    压缩

    Gzip

             压缩

               gzip messages   权限不变

               gzip -#(1-9)  messages  数字越小,压缩速度越快,压缩比越低,数字越大,压缩速度越慢,压缩比越高,生                                                                       成的压缩文件越小,默认压缩比为6.

               gzip -c messages > messages.gz   原文件保留,但权限根据umask来设置

             解压

               gunzip message.gz 或 gzip -d messages.gz   权限不变

               gunzip -c messages.gz > messages 或 gzip -dc messages.gz > messages  或zcat messages.gz > message 压缩包保留,但权限根据umask来设置

               -v 压缩或解压时,显示详细过程

    Bzip2

    压缩

             bzip2 messages 权限不变,原文件消失

             bzip2 -k message 权限不变,原文件保留,可用在压缩和解压缩

             bzip -# (1-9) messages 数字越小,压缩速度越快,压缩比越低,数字越大,压缩速度越慢,压缩比越高,生成的压缩文件                                                 越小,默认压缩比为9.

             bzip2 -c messages > messages.bz2 原文件保留,但权限根据umask来设置

    解压

             bunzip -k message.bz2 或 bzip2 -kd messages.bz2   权限不变,压缩包保留

             bunzip -c messages.bz2 > messages 或 bzip2 -dc messages.bz2 > messages  或bzcat messages.bz2 > message       压缩包保留,但权限根据umask来设置

             -v 压缩或解压时,显示详细过程

    Xz

        xz messages 权限不变,原文件消失

             xz -k message 权限不变,原文件保留,可用在压缩和解压缩

             xz -# (1-9) messages 数字越小,压缩速度越快,压缩比越低,数字越大,压缩速度越慢,压缩比越高,生成的压缩文件越                                             小,默认压缩比为6.

             xz -c messages > messages.xz原文件保留,但权限根据umask来设置

             unxz -k message.xz 或 xz -kd messages.xz   解压权限不变,压缩包保留

             unxz -c messages.xz > messages 或 xz -dc messages.xz > messages  或xzcat messages.xz > message       压缩包保留,但权限根据umask来设置

             -v 压缩或解压时,显示详细过程

    打包

    Tar

    tar

             -c 创建包

             -v 打包或解包显示过程

             -f 指定文件

             -t 查看包中的内容

             -x 从包中解开文件,可解开指定文件或全部文件

                       -xf user.tar passwd 仅解出passwd

                       -xf user.tar 解出全部文件

             -C 与-x 配合,指定解压到的目的目录

             -j 压缩与解压缩时使用bzip2

                       tar jcvf userfile.tar.bz2 group gshadow passwd shadow

             -z 压缩与解压缩时使用gzip

                       tar zcvf userfile.tar.gz group gshadow passwd shadow

             -J 压缩与解压缩时使用xz

                       tar Jcvf userfile.tar.xz group gshadow passwd shadow

    解压时不需要表明用什么压缩工具压缩,tar命令会自动识别 解压只需 tar  -xvf   压缩包

  • 相关阅读:
    强化学习代码实战---多臂赌博机---AttributeError: ‘EntryPoints‘ object has no attribute ‘get‘
    建筑能源管理(2)——建筑能源的类型及统计计算方法
    机器人C++库(9)Robotics Library 之机器人建模(VRML)、工作场景Scances建模(VRML)
    H3C(华三)交换堆叠/IRF配置实例
    手把手带你用香橙派AIpro开发AI推理应用
    [OC学习笔记]Block三种类型
    Nuxt.js Next.js Nest.js
    转转客户端持续交付—鲁班的构建管理
    客户心声|腾讯云数据库助力国信证券反洗钱系统分布式改造
    windows定制ISO-可安装
  • 原文地址:https://blog.csdn.net/m0_72429728/article/details/127349861