linux下不解包查看tar包文件内容
为减少日志文件占用的空间,很多情况下我们会将日志文件以天或周为周期打包成tar.gz 包保存。虽然这样做有利空间充分利用,但当我们想查看压缩包内的内容时确很不方便。如果只是一个tar.gz文件,可以将其解压,再利用grep、awk或vi等工具查看或处理。不过如果有一个月或都一年的日志需要找出某些关键词的行,一个一个的解压,然后再看,是不是很不现实。那有没有什么简便的方法,可以不解压获得我们想要的内容呢?
答案是肯定的,可以利用zutils工具包实现。Zutils 是一组用来处理压缩文件的工具集,支持的压缩档包括:gzip, bzip2, lzip, and xz. 当前版本提供的命令有:zcat, zcmp, zdiff, and zgrep 。
直接查看tar.gz压缩包里的内容可以使用:
1zcat xxx.tar.gz
但是想要在其后面直接加管道grep处理呢?如下:
1[root@back tmp]# zgrep 'footbar.js' vsftpd.tar.gz
2Binary file (standard input) matches
3[root@back tmp]# zcat vsftpd.tar.gz|grep 'footbar.js'
4Binary file (standard input) matches
发现不论是使用zgrep还是使用zcat后再grep都会报错。难道不行?当然不是。查看下zgrep或grep的帮助文档。有这么一行:--binary-files=text
,加上该参数呢?
1zcat vsftpd.tar.gz|grep --binary-files=text 'footbar.js'或
2zgrep --binary-files=text 'footbar.js' vsftpd.tar.gz
发现可以查看文件内容了 ! 为什么呢?
因为我压缩是用的tar czvf参数进行的打包。其实现上经过tar与gzip两层压缩。导致其直接不能管道。如果不解包想直接查看压缩包里包含了那些文件呢?可以用下面的命令:
1[root@back tmp]# tar tvf vsftpd.tar.gz
2-rw------- root/root 441453365 2013-06-03 16:19:56 vsftpd.log
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/zcat-tar-zgrep/2550.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.