问题描述
刚刚从互联网上下载了一个.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.
第八种方案
我更喜欢bsdtar到unzip /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,否则无法实现上述目的。
参考资料