将gzip文件解压缩到特定目录

时间:2012-12-04 16:31:08

标签: gzip compression gz

以下命令的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做到这一点?

3 个答案:

答案 0 :(得分:27)

鉴于您有一个.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.tarz tar选项只是使用gzip进行解压缩以及提取文件的快捷方式。

如果您只想将.gz文件解压缩(而不是解压缩.tar.gz文件)到另一个目录,只需将其解压缩即可。例如。 gzip -dc < file.gz > /somewhere/file

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:2)

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不会将文件提取到不同的目录中,但会期望得到的未压缩文件的NAME也可以指定。

这是通过$i > ${i%%.gz} bash parameter substitution来实现的,它会删除其“file.gz”后缀的名称“.gz”。对于其他shell,语法将是不同的(如果可能的话)。