2015-03-03 140 views
1

Linux新手解压缩.gz文件作为目录

已将gzip文件夹作为abc.gz.现在,当我尝试使用gunzip命令时,文件不会作为文件夹,而是输出文件变为abc。有人能让我知道命令将abc.gz解压缩为一个文件夹。

感谢

+2

gunzip解将解压:

tar -c "folder" | gzip -c > "file.tar.gz" 

或者,tar再次用更短的方式做到这一点上来一个zip文件的内容。如果内容是一个文件夹,那么输出将是一个文件夹。如果内容是一个文件,那么它的内容将是一个文件。 – Vahid 2015-03-03 11:06:18

+1

你试过了哪个命令?请在问题中正确提及! – 2015-03-03 11:06:23

+0

@shekhar $ gunzip abc.gz是命令。但它不是作为文件夹来的。 – santh 2015-03-03 11:20:11

回答

1

gunzip用作唯一的解压缩算法。

因此gunzip只会解压缩文件,然后您需要例如到tar xvf file.tar

tarz选项只是一个简单的快捷方式,在解压文件的同时使用gzip进行解压缩。

+0

我可以听到至少是什么原因downvoting? – deimus 2015-03-03 11:23:13

2

gzip压缩一个单一的文件,并不保存原文件名(你可以例如压缩未有一个名字你抓住一次网络流)进入该文件。如果您需要压缩多个文件,则需要使用tarball(将文件集合打包到单个文件中,tarball也会存储文件的名称)。

当你阅读的gzipman gzip)的说明书,你可以看到,您只需使用

gzip -d < "file.gz" > "realfile.dat" 

解压缩存储在“file.gz”的文件并将其保存为“realfile.dat”。

现在,如果您有压缩多个文件,你需要这样做使用的是早期称为压缩包。也许你放弃了延期。在这种情况下,你可以先解压缩.gz文件,然后使用tar使用,扩展它:

gzip -d < "file.tar.gz" | tar -x 

这里tarstdin读取(由gzip提供的数据,并将其扩展)。由于人们对tar使用gzip了很多次,tar使它更方便使用:

tar -xzf "file.tar.gz" 

其中z意味着你要在其上运行gzip,并f意味着你从一个文件而不是stdin读取。

为了创建这样的存档,您再次首先需要使用tar:

tar -czf "file.tar.gz" "folder" 
+0

现在我尝试了下面的建议,创建了一个新文件夹作为test1,并尝试使用$ gzip -rc test1> test1.gz进行压缩 - >然后使用命令$ gunzip test.gz,然后尝试执行命令$ gzip - d <“test1.tar.gz”| tar -x - errors -bash:test1.tar.gz:没有这样的文件或目录 tar:这看起来不像tar档案 tar:由于以前的错误而退出失败状态。你可以请指导我现在应该怎么做 – santh 2015-03-03 11:39:59

+0

显然这不起作用,因为你命名了你的文件'test1.gz'。你知道IO重定向如何工作('<' and '>')吗? – 2015-03-03 11:45:15

+0

你最好不要使用'gzip -r',它将文件连接在一起。你应该使用'tar -c test1 | gzip -c>“test1.tar.gz”' – 2015-03-03 11:49:26