linux - GZIP 不适用于压缩多个文件

标签 linux command-line-interface gzip

我在一组文件上运行了命令gzip(以获取data.gz),现在当我运行gunzip时,我只得到一个文件。我知道我应该使用 tar 来保留文件结构。但是,我现在可以获得单独的文件吗?

目录有两个文件1.sas7bdat2.sas7bdat。我跑了:

$ gzip -c *.sas7bdat | ssh -l adsusername newserver.com 'cat > /home/username/data.gz'

现在当我运行时:

gunzip data.gz

我只得到一个文件,数据。我想要 1.sas7bdat 和 2.sas7bdat

最佳答案

如果这确实是您使用的命令,那么您就没有问题。但是,也不应该生成 data.gz 文件,除非它已经存在。无论该目录中是否已存在 data.gz 文件,都会出现错误。您可能会得到gzip: data.gz已经有.gz后缀 - 未更改gzip: data.gz: No such file or directory

gzip 命令行上的名称​​单独压缩,并生成不同文件,命令行上的每个文件对应一个文件。 gzip file1 file2 file3 的结果是文件 file1.gz、file2.gz 和 file3.gz。要恢复这些文件,您所需要做的就是 gunzip *.gz

更新:

现在我们看到了您使用的实际命令,您可以查看该文件以尝试确定第一个命令的结束位置和第二个命令的开始位置。

您使用 -c 选项将压缩数据写入 stdout,这会在压缩之前连接两个输入文件。所以gunzip data.gz后的最终结果与cat *.sas7bdat > data相同。

但是,data.gz 文件确实在内部 secret 地分离了这两个文件,尽管没有实用程序可以单独提取它们。您可以使用 zlib 编写自己的程序一次提取一个成员,并将它们写入单独的文件。 inflateInit2inflateinflateEnd 函数以及用于选择 gzip 格式的正确选项一次只会提取一个成员。

关于linux - GZIP 不适用于压缩多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658178/

相关文章:

linux - 简单乘法函数中的推送/弹出段错误

linux - 使用 Bash 脚本查找文件中字符串的行号

linux - 批处理脚本在 Linux 上删除日期之前的文件

JavaScript 到 HTML

python - subprocess.Popen 与 CLI 提示符交互

在 Linux for Mac 上交叉编译简单的标准 C 程序

rust - 在Rust教程代码中获取 “error[E0599]: no method named write_fmt found”错误

http - (Go)发送http请求时如何控制gzip压缩?

python - 如何将大于 RAM 限制的 gzip 文件导入 Pandas DataFrame? "Kill 9"使用 HDF5?

java - 尝试压缩图像(Gzip+Jpeg)然后解压