如何从终端解压缩zip文件?


1413

刚刚从互联网下载了一个.zip文件。我想使用终端解压缩文件。正确的方法是什么?


3
从当前文件夹中提取所有文件,您可以使用:解压\ *。zip
burtsevyg

2
@burtsevyg那里不需要反斜杠。它将使外壳\*视为文字上的星形符号。仅用于unzip *.zip使shell扩展*到所有以结尾的文件.zip
Sergiy Kolodyazhnyy

*独自使用对我不起作用。它导致了filename not matched错误。\*做好了
arman_aegit

我建议您使用&学习“ unar”,而不是使用zip特定的,除非您需要特定的功能。“支持的文件格式包括Zip,Tar-GZip,Tar-BZip2,RAR,7-zip,LhA,StuffIt以及许多其他古老而晦涩的格式。”
masterxilo

Ubuntu已经安装了多个压缩/解压缩工具。apropos zip从控制台运行以获取完整列表。
Stephen W. Wright

Answers:


1926

如果unzip您的系统上尚未安装该命令,请运行:

sudo apt-get install unzip

安装解压缩实用程序后,如果要解压缩到特定的目标文件夹,则可以使用:

unzip file.zip -d destination_folder

如果源目录和目标目录相同,则可以执行以下操作:

unzip file.zip

83
如果您已经在目录中,则要解压缩该文件,则忽略第二个和第三个参数,即unzip /path/to/file.zip
Severo Raz

2
我刚刚使用了此命令。这是一个例子。步骤1(我更改为存储zip文件的目录):cd /home/paf/Copy/Programming/Javascript/Json 步骤2(我将zip文件提取到我刚才提到的目录中):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara 2013年

2
unzip可能是默认程序。换句话说,您可能不需要安装它。
noobninja

2
@Aevi检查手册页[-d exdir] An optional directory to which to extract files.
WAKR

4
确保将其解压缩到一个目录,这与tar存档不同,您可能会发现很多人在其zip文件的根目录中包含数十个文件,这真是一团糟!
史蒂夫,

230

您可以简单地使用unzip

安装它:

apt-get install unzip

并使用它:

cd /path/to/file
unzip file.zip

117

一个更有用的工具是7z,它可以压缩和解压缩一系列压缩格式,特别是lzma通常提供最高压缩率的协议。

此命令将安装7z

sudo apt-get install p7zip-full

此命令列出了zip的内容:

7z l zipfile.zip

此命令提取压缩的内容:

7z x zipfile.zip

5
7z e不保留目录结构- 7z x是否...
assylias 2013年

2
13.10说7z不存在。我认为必须sudo apt-get install 7zip
nitishch 2013年

6
我认为install命令应该是sudo apt-get install p7zipsudo apt-get install p7zip-full您需要完整版本才能获取7z命令。完整版还是处理zip和其他格式的两种格式中的唯一一种。
Automatico

1
您能否澄清“更有用的工具”?您要比解压缩吗?您能否提供使7z更加有用的功能示例,以及在哪种情况下7z是首选?
David LeBauer 2015年

1
对于某些解压缩更为有用:易于使用并且易于记忆。
Shy Robbiani

47

您可以使用:

unzip file.zip -d somedir

提取到 yourpath/somedir

如果要提取到绝对路径,请使用

sudo unzip file.zip -d /somedir

39

使用脚本工具:Perl和Python

这里有许多答案提到需要安装的工具,但是没有人提到Ubuntu的两种脚本语言Perl和Python已经附带了所有必要的模块,这些模块允许您解压缩zip存档,这意味着您不需要安装任何工具其他。只需使用下面介绍的两个脚本之一即可完成工作。它们相当短,如果我们愿意的话,甚至可以简化为单线命令。

蟒蛇

#!/usr/bin/env python3
import sys
from zipfile import PyZipFile
for zip_file in sys.argv[1:]:
    pzf = PyZipFile(zip_file)
    pzf.extractall()

用法:

./pyunzip.py master.zip 

要么

python3 pyunzip.py master.zip

佩尔

#!/usr/bin/env perl
use Archive::Extract;
foreach my $filepath (@ARGV){
    my $archive = Archive::Extract->new( archive => $filepath );
    $archive->extract;
}

用法:

./perlunzip master.zip

要么

perl perlunzip.pl master.zip

也可以看看


1
谢谢,正是我所需要的。我没有root用户,也不想从源代码手动安装unzip。这也可以与bash单一代码一起使用,该代码大多数情况下都可以工作(假设'''文件名内无):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn

@mxmlnkn很高兴我可以提供帮助:)
Sergiy Kolodyazhnyy


21

我喜欢bsdtarunzip/ zip。对于提取,它们非常相似:

bsdtar -x -f /one/two/three/four.zip -C /five
unzip /one/two/three/four.zip -d /five

但是对于拉锁,则bsdtar胜出。假设您输入以下内容:

/one/two/three/alfa/four.txt
/one/two/three/bravo/four.txt

并在zip文件中添加此文件:

alfa/four.txt
bravo/four.txt

这很容易bsdtar

bsdtar -a -c -f four.zip -C /one/two/three alfa bravo

zip没有-d像unzip这样的选项,因此除非您cd先进行,否则您将无法实现以上目的。


尽管我想将胜利归因于foss工具,bsdtarBlóðstokkinn在放松时,显然不适合使用特殊字符(例如单词中的至少一个)。压缩时我什至没有检查。真可惜 :/ unzip毫无问题地处理了它。
Vrakfall

20

这是我认为有用的选项的详细说明:

命令:解压缩-[option]压缩路径。
               -d将文件解压缩到的可选目录  
               -l列出归档文件。
               -P 密码使用密码解密加密的zipfile条目(如果有)。
               -t使用循环冗余检查测试归档文件。  
               -u更新现有文件。  
               -z存档评论

8

http://www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/

安装解压缩=============因此,如果没有安装解压缩,首先我们需要在系统上安装解压缩。unzip命令用于从ZIP存档中提取文件。

运行以下命令进行安装 unzip

sudo apt-get install unzip

unzip Syntex

$ unzip [-aCcfjLlnopqtuvy] [-d dir] zipfile

现在,请按照以下步骤操作:

解压缩文件

选项1 –如果Zip文件与您的终端机位于同一目录/文件夹中,我们希望将其解压缩到当前工作目录中。

使用以下命令来实现上述方案

sudo unzip zip_file_name.zip

如果该zip文件受某些密码保护,请使用以下命令:

sudo ubzip -P zip_file_name.zip

请确保使用-P(大写P)而不是-p,因为这是不同的选项。

选项2 –如果zip文件不在同一目录中,而我们想将文件解压缩/解压缩到其他目录中。

使用以下命令来实现上述方案

sudo unzip path/filename.zip -d another_path_or_same_path

如果我们不使用选项-d,则文件将被提取到当前工作目录中。

如果zip文件受密码保护,我们也可以使用-P

在Linux / Unix中使用tar命令

tar是Tape Archive的首字母缩写。tar命令用于在Linux / Unix中处理档案。系统管理员使用tar命令经常撕了一堆文件或目录在其中被称为高压缩归档tarballtarbzip并且 gzip的Linux / Unix系统。

tar Syntex

tar [OPTION...] [FILE]...

要么

tar需要标记

tar {-r|-t|-c|-x|-u}

tar可选标志

tar {one of the required Flags} [ -d ][-B] [ -F ] [ -E ] [ -i ] [-h ] [ -l ] [ -m ] [ -o ] [ -p ] [ -w] [ -s ] [ -U ] [ -v ]
[-Number] [-b Blocks] [-f Archive]

例子

通过压缩目录或单个文件来创建tar存档文件

下面的终端命令将在目录或 当前工作目录中创建一个.tar名为的文件 。sample_dir.tar/home/codebind/sample_dirsample_dir

ripon@ripon:~$  tar -cvf sample_dir.tar sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar

在此处输入图片说明

这些标志(-cvf)的实际含义是

-c, --create–创建一个新档案

-x, --extract, --get–从存档中提取文件

-f, --file ARCHIVE–使用存档文件或设备ARCHIVE

通过压缩目录或单个文件来创建tar.gztgz存档文件

下面的终端命令将在目录或 当前工作目录中创建一个.tar.gz名为的文件 。sample_dir.tar.gz/home/codebind/sample_dirsample_dir

请注意,我们在命令中添加了额外的-z标志,这实际上是-z标志的含义

-z, --gzip, --gunzip --ungzip–使用gzip压缩档案

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar.gz

在此处输入图片说明

下面的命令将创建一个.tgz文件。需要注意的一个是tar.gz和tgz都是相似的。

ripon@ripon:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tgz

一次压缩多个目录或文件

假设,例如,我们要将sample_dir目录,java_test目录和abc.py文件压缩为名为的tar文件 sample_dir.tar.gz

运行以下命令以实现上述目标。

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dir java_test abc.py
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
java_test/
java_test/HelloCV.java
abc.py
ripon@ripon:~$ ls
sample_dir java_test abc.py sample_dir.tar.gz

在此处输入图片说明

.bzip2通过压缩目录或单个文件创建存档文件

ripon@ripon:~$ tar -cjvf sample_dir.tar.bz2 sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

请注意,我们-f在命令中添加了额外的标志,这-f实际上是标志的含义

-f, --file ARCHIVE–使用存档文件或设备ARCHIVE

在此处输入图片说明

提取.tar存档文件

我们可以使用tar命令解压缩压缩文件。下面的命令会将的内容提取sample_dir.tar到当前目录。

ripon@ripon:~$ tar -xvf sample_dir.tar
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

在此处输入图片说明

以下命令将提取或解压缩指定目录/home/codebind/dir_name中的文件,即在这种情况下。

ripon@ripon:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_name
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

我们-C在命令中添加了额外的标志。这-C 实际上是标志的含义

-C, --directory DIR –转到目录DIR

在此处输入图片说明


1
另外,要检查是否已安装zip / unzip,请使用zip -vunzip -v。如果安装了它会返回类似UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(加上额外的信息多行如果没有安装,它会这样说。The program 'zip' is currently not installed. You can install it by typing: apt install zip
SherylHohman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.