2012-12-04 1460 views
12

什么的gzip相当于以下命令:
解压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 ?

回答

22

鉴于你有一个.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.tartarz选项只是一个简单的快捷方式,可以在解压缩文件的同时使用gzip进行解压缩。

如果您只想将.gz文件(而不是提取.tar.gz文件)解压缩到其他目录,只需将其放在那里。例如。 gzip -dc <file.gz> /somewhere/file

+0

如果你想移动问题到一个不同的SX平台,我相信这是一个过程 – mit

3

为了保护不GZIP压缩.tar文件,我用这样的线具有良好的效果:

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

这在某些情况下,管理包一个有用而直观的形式。

1
cd /mydir_with_gz_files 
for i in *gz 
do 
gzip -dkc < $i > /my_destination_dir/${i%%.gz} 
done 

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

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

2)我也想强调那些给出正确答案似乎很明显的东西,但对我和问题的作者来说不是这样:gzip不会将文件提取到不同的DIRECTORY中,但会期望得到的未压缩文件也要指定NAME。

这是由$i > ${i%%.gz}庆典parameter substitution这条像它的“.gz”后缀“file.gz”的名称在这里实现。使用其他shell的语法将会不同(如果可能的话)。