24

以下命令的 gzip 等效项是什么:

tar xvzf /usr/local/file/file/file.tar.gz -C /usr/local/extract_here

我在尝试

gzip -d /usr/local/file/file/file.tar.gz -C /usr/local/extract_here

但它不起作用,我该如何用 gzip 做到这一点?

4

3 回答 3

47

鉴于您有一个 .tar.gz 文件,您尝试的第一种方法,使用 -C 选项,可以正常工作:

tar xvzf /dir/to/file.tar.gz -C /dir/to/output/

tar调用 gzip 解压缩,然后从 tar 流中提取文件。 gzip只能解压,所以只需要解压gunzip file.tar.gz就可以了file.tar,然后你需要tar xvf file.tar. z选项tar只是使用 gzip 进行解压缩以及提取文件的快捷方式。

如果您只想将 .gz 文件(而不是解压缩 .tar.gz 文件)解压缩到不同的目录,只需在此处通过管道传输即可。例如gzip -dc < file.gz > /somewhere/file

于 2012-12-05T07:21:31.147 回答
8

为了在没有 GZIP 压缩的情况下保留 .tar 文件,我使用了这样的一行,效果很好:

cat  file_to_uncompress.tar.gz | gzip -d > /destination_directory/packet_uncompressed.tar

这是在某些情况下管理数据包的有用且直观的形式。

于 2015-11-19T09:11:57.567 回答
6
cd /mydir_with_gz_files
for i in *gz
do
gzip -dkc < $i > /my_destination_dir/${i%%.gz}
done

此语法用于将包含的多个 *.gz文件提取/mydir_with_gz_files到不同的目录中。

1)-k此处使用选项,否则 gzip 将不会保留存档本身。好记!

2) 我还想强调对那些给出正确答案的人来说似乎很明显但对我和问题的作者来说不是这样的事情:gzip 不会将文件提取到不同的目录中,但希望得到的未压缩文件的名称被指定为好。

这是通过$i > ${i%%.gz} bash 参数替换file.gz来实现的,该替换去除了其“ .gz”后缀的“”之类的名称。对于其他 shell,语法会有所不同(如果可能的话)。

于 2017-03-28T15:49:23.090 回答