以下命令的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做到这一点?
答案 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.tar
。 z
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,语法将是不同的(如果可能的话)。