it-swarm.cn

如何在UNIX命令行上进行拉链/解压缩?

如何从命令行创建和提取Zip存档?

570
joachim

通常,使用tar创建未压缩的存档,然后使用gzipbzip2压缩该存档。对应的gunzipbunzip2命令可用于解压缩所述存档,或者您可以仅使用tar命令上的标志来执行解压缩。

如果您专门指的是 Zip文件格式 ,则只需使用Zipunzip命令。

压缩:

Zip squash.Zip file1 file2 file3

或压缩目录

Zip -r squash.Zip dir1

解压缩:

unzip squash.Zip

这会将其解压缩到您当前的工作目录中。

698
Justin Ethier

在UNIX派生类中,确实有vast种不同的压缩和解压缩方法,因此,我假设您是一般意义上的“ Zip”,而不是specific文件格式。

您可以使用GNU tar)程序压缩文件(压缩格式):

tar -zcvf myfile.tgz .

它将执行当前目录。替换.和其他文件名(如果您需要其他名称)。

要解压缩该文件,请使用:

tar -zxvf myfile.tgz

当然,这是假设您具有tar能够进行压缩以及将文件合并为一个文件的能力。

如果没有,您可以使用tar cvf后跟gzip(同样,如果有的话)进行压缩,然后再按gunzip后跟tar xvf


对于Zip格式文件的特定处理,我建议下载7Zip并使用它-它可以识别巨大多种文件格式,包括Zip格式。

68
user14408

如果没有安装Zip和解压缩软件包,并且具有Java,则可以使用jar解压缩:

jar -xf file.Zip
33
mlocke

好吧,当涉及为各种操作系统分发文件时,我建议 7-Zip

通常在p7Zip包中,您将获得7z7za命令,您可以使用它们创建自己的7z归档文件。

7za也可以解压缩标准( pkzip )Zip存档(也可以使用-tzip开关来创建它们)。

压缩方式:

7za a archive.7z file1 file2 directory/

解压缩:

7za x archive.7z

它还可以使用-sfx开关创建自解压档案:

7za a -sfx archive.exe files1 file2 dir

如果Windows用户无法打开7z存档,我建议使用此方法(如果您要为此建议一个工具: PeaZip )。

如果要对压缩包使用相同的压缩算法,请将-J开关与tar结合使用:

tar cJf archive.tar.xz file1 file2 dir

xz 是UNIX工具,使用LZMA2进行压缩,但是以gzbz2等的方式工作。它甚至可以用作过滤器。

7z不会在UNIX上创建具有完整文件系统信息的存档,因此在使用7z之前,您需要使用tar(但是由于7z存储了有关tar文件的其他信息,因此我建议使用xz,因为它是专为此设计的):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z
30
polemon
unzip <filename>

Zip -r archive.Zip <filename> [filename]

您需要确保通过软件包管理器安装了这些命令。这比在命令行上使用其他任何东西都难。这肯定比使用tar创建档案简单。

23
Starfish

BSD Tar也可以做到这一点

bsdtar -a -c -f sunday.Zip sunday.jpg

要么:

bsdtar -x -f sunday.Zip
4
Steven Penny

最标准的答案是 pax ,建议在 cpiotar 之上使用。

cpio和POSIX tar不同,但是像GNU tarpax)既可以存档文件,也可以压缩此行为不同于 Zip ,后者会在将每个文件放入存档之前先对其进行压缩。

3
mouviciel

这仅涵盖提取。

为此,我开始使用 dtrx

这样做的全部目的是消除复杂性。因此,您只需将任何存档传递给它,它便会确定需要执行哪些操作。邮编,焦油,gz ...用法始终相同— dtrx archive.Zip。它问了几个问题,您就完成了。

dtrx在大多数存储库中都可用,因此您可以apt || yum安装它。

2
JackLeo

我经常发现自己试图在工作目录中压缩修改后的文件-将所有修改后的文件复制到另一个沙盒工作目录中,或者将它们保留一小段时间,因为我想撤消某些更改。

在这种情况下,我将修改后的文件列表复制到一个临时文件中,并使用Zip和选项[email protected]

假设我修改了文件Foo.h,Bar.cc和TestBar.cc。

假设我创建了一个名为Modifyed-files.txt的文件,其内容为:

Foo.h
Bar.cc
TestBar.cc

我执行以下命令来压缩这些文件:

cat modified-files.txt | Zip modified-files.Zip [email protected]
1
R Sahu