如果一个压缩文件非常大,而您只想查看文件的内容是什么。 由于在这种情况下,文件的解压将花费大量时间,因此为了节省时间并在不解压文件的情况下查看文件,可以使用zcat命令。

zcat 命令

通常 zcat 用于查看由 gzip 压缩实用程序创建的文件。zcat 将命令行中列出的文件或由标准输入输入的数据解压,解压后的数据写到标准输出。

Zcat 命令的语法:

zcat [选项] [名称]

选项-a --asciiAscii文本模式:按本地习惯转换行结束符。该选项仅在一些非Unix   系统上有效。   对于MSDOS,在压缩时CR  LF(译注:即回车和换行符)被转换为LF,在解压时LF被转换为CR LF。-c --stdout --to-stdout将结果写到标准输出;原文件保持不变。如果有多个输入文件,输出将由一系列 独立的压缩文件组成。如果想得到较好的压缩率,在压缩前应将多个文件连在一起。-d --decompress --uncompress解压缩。-f --force强制压缩和解压缩,即使指定文件具有多重连接,或相应文件已经存在,或压缩数据            来自或写往一个终端。            如果输入数据是            gzip无法识别的格式,同时在命令行中也给出了--stdout选项,gzip将把输入数据拷贝至标准       输出而不做任何改动,就象cat所做的一样。      如果未给出      -f选项,并且未在后台运行, gzip 会提示用户以确认是否覆盖一个已存在的文件。-h --help显示帮助信息然后退出。-l --list列出每个压缩文件的如下项目:

zcat将两个参数作为选项和文件名。 提供最终结果以显示压缩文件内容而不解压缩文件。


创建了 test.txt 文件并在 gzip 的帮助下对其进行压缩。 在 zcat 命令的帮助下,我们能够读取压缩文件的内容。

如果您尝试使用标准 cat 命令查看test.txt.gz其内容,您将看到一个乱码输出:

zcat 命令主要使用两个组件,即选项和压缩文件名。 任何最终用户或客户端何时会触发 zcat 命令? zcat 命令将接受输入作为选项,将压缩文件作为标准输入,并将压缩文件内容作为标准输出显示。

注意:zcat 实用程序仅适用于 gzip 或 gunzip 压缩文件。 如果它可以与 tar 压缩技术一起使用,它将无法工作。

zcat 多个压缩.gz文件查看

在 zcat 命令中,我们具有在同一命令中同时查看多个压缩文件的功能。

按照上面的 zcat 命令,我们可以同时读取压缩文件的个数。 从数据目录中,我们同时读取两个压缩文件,即 test.txt.gz test1.txt.gz。

zcat 强制文件查看

在 zcat 命令中,无论文件是否压缩,我们都具有显示文件内容的功能。 要强制打印满足要求的文件,我们需要在 zcat 命令中使用“-f”选项。

即使内容是二进制或加密形式,这也会显示文件的内容。

zcat 获取打印压缩信息

在 zcat 命令的帮助下,我们可以得到文件的压缩信息。 要打印压缩信息,我们需要在 zcat 命令中使用“-l”选项。


compressed size: 压缩文件的长度
uncompressed size: 压缩前文件的长度
ratio: 压缩率(如果未知则为0.0%)
uncompressed_name: 压缩前的文件名

按照上面的命令,我们可以找到压缩文件的压缩状态。 我们正在使用其中一个文件,即 file.txt.gz。 压缩信息将显示压缩的、未压缩的比率信息以及压缩文件名。

zcat 压制所有警告信息

有时在打印任何压缩数据时,会出现大量警告。 为了避免这种情况,我们需要在 zcat 命令中使用“-q”选项。

可以在 zcat 命令中使用“-q”选项来避免警告。

zcat命令代码实现

int main(int argc, char *argv[])
{gzFile zfp;/* 保存程序名称并跳过  */prog = argv[0];argc--, argv++;/* 忽略任何开关  */while (*argv && (**argv == '-')) {argc--, argv++;}if (argc == 0) {zfp = gzdopen(STDIN_FILENO, "rb");if (zfp == NULL)error("can't gzdopen stdin");gz_uncompress(zfp, STDOUT_FILENO);return 0;}do {/* file_uncompress(*argv); */zfp = gzopen(*argv, "rb");if (zfp == NULL) {error("can't gzopen `%s'", *argv);_exit(EXIT_FAILURE);}gz_uncompress(zfp, STDOUT_FILENO);} while (argv++, --argc);return 0; /* 避免警告  */
}

编译运行:

总结

毫无疑问,如果您只想查看压缩文件的内容,zcat 命令可以节省您的时间。 有关更多信息,请访问其手册页。

欢迎关注微信公众号【程序猿编码】,需要zcat 命令完整源码的添加本人微信号(c17865354792)

Linux下zcat命令详解及C/C++代码实现相关推荐

  1. Linux下dirname命令详解及C/C++代码实现

    dirname命令的基本用法非常简单--只需写下命令名,后跟文件的绝对名称即可. 在输出中,将获得完整的目录树,但文件名除外. linux dirname 命令 以下是 dirname 命令的通用语法 ...

  2. Linux下rm命令详解及C/C++代码实现

    rm 命令是 Unix/Linux 操作系统中的基本命令之一.rm(即删除)命令用于删除 Linux 和其他类 Unix 操作系统上的文件和目录.此命令通常以静默方式运行,运行 rm 命令时应非常小心 ...

  3. Linux下uniq命令详解及C/C++代码实现

    Linux uniq 命令用于从文件中删除所有重复的行. 此外,它还可用于显示任何单词的计数.仅重复行.忽略字符以及比较特定字段. 它是 Linux 系统中最常用的命令之一. uniq 命令使用 Un ...

  4. Linux下chmod命令详解及C/C++代码实现

    Linux 中对文件的访问由文件权限.属性和所有权控制. 因此,只有授权的用户和进程才能访问文件和文件夹.本篇使用 chmod 命令更改文件和目录的访问权限. Linux 文件权限 在这之前,让我们先 ...

  5. Linux下touch命令详解及C/C++代码实现

    touch 命令是创建新的空文件的最简单方法.它还用于更改现有文件和目录的时间戳(即最近访问和修改的日期和时间),是 UNIX/Linux 操作系统中使用的标准命令. touch 命令 touch的语 ...

  6. Linux下date命令详解及C/C++代码实现

    Linux date 命令用于显示系统日期和时间. date 命令可以用于设置系统的日期和时间. 默认情况下,date 命令显示配置 unix/linux 操作系统的时区中的日期.如果你是超级用户 ( ...

  7. linux下dd命令详解

    linux下dd命令详解    名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...

  8. linux下scp命令详解

    http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792179.html linux下scp命令详解 http://www.9usb.net/20 ...

  9. linux下tree命令详解

    From:http://blog.163.com/ly_89/blog/static/186902299201161302812880/ linux下tree命令详解---linux以树状图逐级列出目 ...

最新文章

  1. mysql yearweek 日期不准_Mysql 中,WEEK 与YEARWEEK函数的参数问题
  2. win32应用程序创建流程
  3. angularjs 弹出框 $modal传值
  4. 不能安装_钢厂为什么不能随意更换一氧化碳报警器安装位置
  5. 很有意思的css口诀
  6. TCP/IP 和 TCP/IP的 三/四次握手
  7. vue保存页面的值_vue中使用localStorage存储信息
  8. Spyder远程连接矩池云
  9. 机器学习模型实战!如何从 900 万张图片中对 600 类照片进行分类? | 技术头条...
  10. 01 Django简介
  11. 亲测源码多多进鱼带VUE源码任务悬赏源码活动营销三级分销返佣积分商城版
  12. PHP校园食堂系统描述
  13. FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法
  14. 3GQQ幻想西游攻略
  15. HDMI CEC HDCP
  16. 【webView】webView和原生Android交互
  17. python如何在图片上添加文字_Python在图片中添加文字的两种方法
  18. 广东深圳计算机学校排名2015,2015年广东深圳重点小学排名
  19. 第一道bfs,撸了一晚上
  20. Word文档怎么横向排版?这三种方法简单高效专业

热门文章

  1. slurm作业调度系统
  2. MySQL获取上一年、月、日、星期、时、分、秒的日期
  3. 如何把文字转换成语音,文字转语音转换器能帮你
  4. c语言switch case 空,switch语句中case为空时的意义
  5. 亚马逊接口NextToken分页调用时AuthFailure问题的解决
  6. 《数据结构(c语言版)》 作者 唐国民,王国钧 pdf,王国钧
  7. 包含有简易mvp的音乐播放器
  8. 架构的本质是管理复杂性,微服务本身也是架构演化的结果
  9. Roam Research 综合评测以及使用教程
  10. 如何成为一名合格的php程序员