2012-12-04 32 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

-Cオプションを指定して、うまく動作します、あなたが.tar.gz形式のファイルを持っているという事実は、あなたがしようとした最初の方法、考える:呼び出しが解凍するgzipで圧縮

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

tarをし、 tarストリームからファイルを抽出します。 gzipは解凍しかできませんので、gunzip file.tar.gzは解凍されたfile.tarをそのまま残してください。tar xvf file.tarが必要です。 zオプションがtarの場合は、gzipを使って解凍してファイルを解凍するだけの簡単な方法です。

.gzファイル(.tar.gzファイルを解凍するのではなく)を別のディレクトリに解凍する場合は、単にそこにパイプを張ってください。例えば。 gzip -dc <file.gz> /somewhere/file。いくつかの状況では、パケットを管理するための便利で直感的な形だ

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

+0

質問を別のs​​xプラットフォームに移動する場合は、この手順があると思います – mit

3

は、GZIP圧縮せずに.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はファイルを別のディレクトリに抽出しないが、結果として得られる非圧縮ファイルNAMEも指定する必要があります。

これは、その「.gz」接尾辞の「file.gz」のような名前を取り除き$i > ${i%%.gz}bashのparameter substitutionによってここに達成されます。他のシェルでは、シンタックスは(可能な限り)異なっています。

関連する問題