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

ubu*_*erd 1816 command-line zip

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

Kel*_*ley 2462

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

sudo apt-get install unzip
Run Code Online (Sandbox Code Playgroud)

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

unzip file.zip -d destination_folder
Run Code Online (Sandbox Code Playgroud)

如果源目录和目标目录相同,您可以简单地执行以下操作:

unzip file.zip
Run Code Online (Sandbox Code Playgroud)

  • 如果您已经在要解压缩文件的目录中,请省略第二个和第三个参数,即`unzip /path/to/file.zip` (111认同)
  • 确保你解压到一个目录,不像 tar 档案,你可能会发现很多人在他们的 zip 文件的根目录中包含了几十个文件,这真的会弄得一团糟!!! (10认同)
  • `unzip` 可能是默认程序。换句话说,您可能不需要安装它。 (4认同)
  • @Aevi 检查手册页 `[-d exdir] 一个可选目录,用于提取文件。` (3认同)
  • 我刚刚使用了这个命令。这是一个例子。Step 1(我改到存放zip文件的目录):`cd /home/paf/Copy/Programming/Javascript/Json` Step2(我把zip文件解压到刚才提到的目录下):`unzip file .zip -d /home/paf/Copy/Programming/Javascript/Json` (2认同)
  • 我知道我们不应该用评论来说毫无意义的事情,但是哇,你有超过 5000 名代表教新手如何解压缩终端,打赌你在写答案时没想到...... . :) +1 (2认同)

Pan*_*her 264

您可以简单地使用unzip.

安装它:

apt-get install unzip
Run Code Online (Sandbox Code Playgroud)

并使用它:

cd /path/to/file
unzip file.zip
Run Code Online (Sandbox Code Playgroud)


小智 146

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

此命令安装7z

sudo apt-get install p7zip-full
Run Code Online (Sandbox Code Playgroud)

此命令列出 zip 的内容:

7z l zipfile.zip
Run Code Online (Sandbox Code Playgroud)

此命令提取 zip 的内容:

7z x zipfile.zip
Run Code Online (Sandbox Code Playgroud)

  • `7z e` 不保留目录结构 - `7z x` 会... (13认同)
  • 我认为安装命令应该是 `sudo apt-get install p7zip` 或 `sudo apt-get install p7zip-full` 你需要完整版才能获得 `7z` 命令。full 也是唯一一个处理 zip 和其他两种格式的格式。 (8认同)
  • 对于某些解压缩更有用:易于使用且其名称易于记住。 (3认同)
  • 13.10 说 7z 不存在。我认为它必须 sudo apt-get install 7zip (2认同)
  • 你能澄清“一个更有用的工具”吗?你是在比较解压吗?您能否提供任何使 7z 更有用的功能示例,也许在哪些情况下 7z 更受欢迎? (2认同)

小智 59

您可以使用:

unzip file.zip -d somedir
Run Code Online (Sandbox Code Playgroud)

提取到 yourpath/somedir

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

sudo unzip file.zip -d /somedir
Run Code Online (Sandbox Code Playgroud)


Ser*_*nyy 58

使用脚本工具:Perl 和 Python

这里的许多答案都提到需要安装的工具,但没有人提到 Ubuntu 的两种脚本语言 Perl 和 Python 已经附带了所有必要的模块,允许您解压缩 zip 存档,这意味着您不需要安装任何东西别的。只需使用下面提供的两个脚本中的一个来完成这项工作。它们相当短,如果我们愿意,甚至可以浓缩为一行命令。

Python

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

用法:

./pyunzip.py master.zip 
Run Code Online (Sandbox Code Playgroud)

或者

python3 pyunzip.py master.zip
Run Code Online (Sandbox Code Playgroud)

珀尔

./pyunzip.py master.zip 
Run Code Online (Sandbox Code Playgroud)

用法:

./perlunzip master.zip
Run Code Online (Sandbox Code Playgroud)

或者

perl perlunzip.pl master.zip
Run Code Online (Sandbox Code Playgroud)

也可以看看

  • 谢谢,正是我需要的。我没有root,也不想从源代码手动安装解压缩。这也可以与 bash one-liner 一起使用,它通常可以工作(假设文件名中没有 `'''`): `unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1' '' )。提取所有()”; }` (7认同)
  • 只需使用 ZipFile 类,而不是 PyZipFile,后者对压缩 Python 库有一些特定的支持 (2认同)

小智 34

如果源目录和目标目录相同,您可以简单地执行以下操作:

unzip filename.zip
Run Code Online (Sandbox Code Playgroud)


Ste*_*nny 27

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

bsdtar -x -f /one/two/three/four.zip -C /five
unzip /one/two/three/four.zip -d /five
Run Code Online (Sandbox Code Playgroud)

但是对于压缩,bsdtar获胜。假设你有这个输入:

/one/two/three/alfa/four.txt
/one/two/three/bravo/four.txt
Run Code Online (Sandbox Code Playgroud)

并希望在 zip 文件中包含此内容:

alfa/four.txt
bravo/four.txt
Run Code Online (Sandbox Code Playgroud)

这很容易bsdtar

bsdtar -a -c -f four.zip -C /one/two/three alfa bravo
Run Code Online (Sandbox Code Playgroud)

zip 没有-d像 unzip 这样的选项,所以除非你cd先,否则你无法实现上述目标。


kas*_*der 24

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

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

  • 另外 unzip -o 进行覆盖 (3认同)

M.A*_*pon 11

按照以下说明操作:http : //www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/

安装解压

所以首先我们需要在我们的系统上安装 unzip 如果它没有安装。unzip 命令用于从 ZIP 存档中提取文件。

运行以下命令进行安装 unzip

sudo apt-get install unzip
Run Code Online (Sandbox Code Playgroud)

unzip 句法

$ unzip [-aCcfjLlnopqtuvy] [-d dir] zipfile
Run Code Online (Sandbox Code Playgroud)

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

解压缩文件

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

使用以下命令实现上述场景

sudo unzip zip_file_name.zip
Run Code Online (Sandbox Code Playgroud)

如果 zip 文件受密码保护,则使用以下命令:

sudo ubzip -P zip_file_name.zip
Run Code Online (Sandbox Code Playgroud)

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

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

使用以下命令实现上述场景

sudo unzip path/filename.zip -d another_path_or_same_path
Run Code Online (Sandbox Code Playgroud)

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

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

在 Linux / Unix 中使用 tar 命令

tar是 Tape Archive 的首字母缩写词。tar 命令用于在 Linux/Unix 中操作档案。系统管理员使用焦油经常命令懵了一堆文件或目录的进入高度压缩的档案被称为tarballtarbzip并且 gzip的Linux / Unix系统。

tar 语法

tar [OPTION...] [FILE]...
Run Code Online (Sandbox Code Playgroud)

或者

tar 需要的标志

tar {-r|-t|-c|-x|-u}
Run Code Online (Sandbox Code Playgroud)

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]
Run Code Online (Sandbox Code Playgroud)

例子

通过压缩目录或单个文件创建 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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是这些标志(-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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

下面的命令将创建一个 .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
Run Code Online (Sandbox Code Playgroud)

一次压缩多个目录或文件

比方说,例如,我们要将sample_dir目录、java_test目录和abc.py文件压缩为名为 .tar 的 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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

.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:~$ 
Run Code Online (Sandbox Code Playgroud)

请注意,我们-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:~$ 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

/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:~$ 
Run Code Online (Sandbox Code Playgroud)

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

-C, --directory DIR – 切换到目录 DIR

在此处输入图片说明

  • 此外,要检查是否安装了 zip/unzip,请使用 `zip -v` 和 `unzip -v`。如果已安装,它将返回类似 Debian 2009 年 4 月 20 日的`UnZip 6.00 的内容。由 Info-ZIP 原创。`(加上几行附加信息。如果未安装,它会说类似“当前未安装程序 'zip'。您可以通过键入:apt install zip` 来安装它。 (2认同)