如何不解压tar.gz压缩包直接读取其中的CSV文件?
不解压tar.gz归档直接读取内部CSV文件的方法
你需要在不解压归档的情况下读取people-10000.tar.gz里的CSV表格,但用zcat命令输出的内容开头带有tar元数据,用unzip -p又提示文件不是zip格式无法处理。以下是可行的解决方法:
直接读取CSV的正确命令
用tar命令的内置选项可以直接提取指定文件到标准输出,完全不需要解压整个归档:
tar -xOzf people-10000.tar.gz people-10000.csv | head -2
参数说明:
-x:执行提取文件操作-O:把提取的内容输出到终端(不写入磁盘)-z:处理gzip压缩的归档文件-f:指定要操作的归档文件路径- 最后跟上归档内的目标CSV文件名
people-10000.csv
执行后就能得到干净的CSV内容,不会包含tar元数据。
辅助命令:确认归档内的文件名
如果不确定归档里的CSV具体叫什么名字,可以先列出归档内的所有文件:
tar -tzf people-10000.tar.gz
为什么之前的方法失效?
zcat仅负责解压gzip层,不会解析tar归档的结构,所以会把整个tar包的内容(包括文件元数据和CSV正文)全部输出unzip只支持zip格式的归档,你的文件是tar.gz(tar归档+gzip压缩),两者格式不兼容,所以执行失败
内容的提问来源于stack exchange,提问作者Artem Novak
相关产品推荐
相关产品推荐

