当前位置: 首页>>技术教程>>正文


如何从终端解压zip文件?

, ,

问题描述

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

最佳解决方案

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

sudo apt-get install unzip

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

unzip file.zip -d destination_folder

次佳解决方案

您可以简单地使用unzip

安装它:apt-get install unzip

并使用它:unzip file.zip

第三种解决方案

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

该命令安装7z

sudo apt-get install p7zip-full

该命令列出了zip的内容:

7z l zipfile.zip

该命令提取zip的内容:

7z x zipfile.zip

第四种方案

您可以使用:

unzip file.zip -d somedir

提取到yourpath/somedir

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

sudo unzip file.zip -d /somedir

第五种方案

如果您的目的地与源zip文件相同,则可以简单地执行以下操作:

unzip filename.zip

第六种方案

使用脚本工具:Perl和Python

这里的许多答案都提到了需要安装的工具,但没有人提到过,Ubuntu的两种脚本语言Perl和Python已经提供了所有必要的模块,允许您解压zip文件,这意味着您不需要安装任何东西其他。只需使用下面介绍的两个脚本中的任何一个来完成这项工作。它们很短,如果我们愿意的话,甚至可以压缩成one-liner命令。

Python

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

用法:

./pyunzip master.zip

Perl

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

用法:

./perlunzip master.zip

第七种方案

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

Command: unzip -[option] zip-path.  
               -l List archive files.  
               -t Test archive files with cyclic redundancy check.  
               -u update the existing files.  
               -z archive comment.  

第八种方案

我更喜欢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选项,所以除非先cd,否则无法实现上述目的。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/4.html,未经允许,请勿转载。