Linux中解压缩命令unzip

时间:2020-03-05 15:30:01  来源:igfitidea点击:

如果我们有一个zip压缩文件,则可以在Linux命令行中解压缩它。
Linux中的Unzip命令非常多功能,我们可以使用它不仅仅是提取zip文件。

我已经讨论了如何在过去的Linux中gzip一个文件夹。

现在是时候看到了解压缩命令的各种用法了。
在我们这样做之前,请确保系统上已安装Unzip。
我们可以使用分发的包管理器安装命令。

在Ubuntu和Debian上,我们可以使用此命令:

sudo apt install unzip

一旦我们验证了,让我们看看如何在Linux终端中使用解压缩。

Linux中的解压缩命令

Unzip命令具有一个非常简单的语法:

unzip [option] zip_file

如果使用它以在没有任何选项的情况下提取zip文件,则它将提取当前目录中的所有文件:

unzip webdesign.zip 
Archive:  webdesign.zip
  inflating: 339252-PAJF05-394.ai    
  inflating: 339252-PAJF07-322.eps   
  inflating: 339252-PALBTI-224.ai    
  inflating: 339252-PALBTL-394.eps   
  inflating: 339252-PALBTM-53.jpg    
  inflating: License free.txt        
  inflating: License premium.txt

这不是你大部分时间都想要的。
它只会使用所有提取的文件淹没当前目录。

ls
 339252-PAJF05-394.ai    339252-PALBTI-224.ai    339252-PALBTM-53.jpg  'License premium.txt'
 339252-PAJF07-322.eps   339252-PALBTL-394.eps  'License free.txt'      webdesign.zip

1.解压缩到目录

预期的行为是我们应该将文件提取到某个目录,通常是与zip文件相同的名称。

我们可以指定要提取文件的目标目录。

unzip -d target_directory zip_file

如果目标目录不存在,则将创建它。
尽管我们无法以这种方式创建嵌套目录。

请注意,我们还可以将目标目录放在最后,但并非所有选项都可以在最后添加。

unzip zip_file -d target_directory

2.查看zip文件的内容而不提取

如果我们想查看zip文件包含的内容,声明必须首先提取它。
我们可以使用"-l""选项,它将显示ZIP文件的内容。

unzip -l zip_file

如我们所见,它还显示文件的时间戳和单个文件的实际大小以字节为单位。

Hyman@theitroad:$unzip -l webdesign.zip 
Archive:  webdesign.zip
  Length      Date    Time    Name
---------  ---------- -----   ---
   205358  2016-06-18 23:14   339252-PAJF05-394.ai
   996906  2016-06-18 23:14   339252-PAJF07-322.eps
   213968  2016-06-20 00:00   339252-PALBTI-224.ai
  1005362  2016-06-20 00:00   339252-PALBTL-394.eps
   305531  2016-06-20 00:00   339252-PALBTM-53.jpg
     1462  2016-06-20 09:45   License free.txt
     1116  2016-06-20 09:45   License premium.txt
---------                     ------
  2729703                     7 files

如果需要,我们可以通过使用具有"-V"选项的详细模式,获得更多的信息,如压缩大小,压缩比。
输出中的CRC-32是循环冗余校验。

Hyman@theitroad:$unzip -v webdesign.zip 
Archive:  webdesign.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ---
  205358  Defl:N   142097  31% 2016-06-18 23:14 792f2380  339252-PAJF05-394.ai
  996906  Defl:N   221228  78% 2016-06-18 23:14 440390d3  339252-PAJF07-322.eps
  213968  Defl:N   147568  31% 2016-06-20 00:00 cdb64dfc  339252-PALBTI-224.ai
 1005362  Defl:N   226727  77% 2016-06-20 00:00 aed3d97a  339252-PALBTL-394.eps
  305531  Defl:N   183363  40% 2016-06-20 00:00 e4ced90f  339252-PALBTM-53.jpg
    1462  Defl:N      728  50% 2016-06-20 09:45 0eb9e17b  License free.txt
    1116  Defl:N      558  50% 2016-06-20 09:45 165dd84e  License premium.txt
--------          -------  ---                            ------
 2729703           922269  66%                            7 files

3.覆盖所有文件而不提示

如果在我们提取文件的目录中存在具有相同名称的文件,则会为每个此类文件升级。
我们可以强制覆盖包含选项-o的所有文件。

unzip -o -d target_directory zip_file

4.不要覆盖任何文件-n

如果我们不希望以新提取的文件覆盖任何现有文件,请使用-n选项(代表永不覆盖)。

unzip -n -d target_directory zip_file

5.更新文件并在必要时创建

覆盖所有文件略有不同。
在这种情况下,只将覆盖那些文件的文件,其与现有文件具有更新的时间戳。
如果文件不存在,则将创建它。

我们可以通过选项-U实现这一目标:

unzip -u -d target_directory zip_file

6.新鲜的现有文件,但创建无

这里前面的例子略有变化。
在此,它将更新现有文件,如果它们具有较旧的时间戳,但它也不会创建任何新文件,即使它们不存在。

选项-f允许我们执行以下操作:

unzip -f -d target_directory zip_file

7.在安静模式下提取

当我们解压缩文件时,它会显示在显示屏上提取的所有文件。
现在想象一个有数百个文件的zip文件。
如果提取它,则屏幕将与输出混淆。

我们可以使用Quiet模式与Option-Q,我们不会在显示屏上看到任何内容:

unzip -q -d target_directory zip_file

8.排除提取中的文件

我们还可以从提取的某些文件中排除某些文件或者某些类型的文件。

unzip zip_file -x file_to_exclude

在我的例子中,假设我不想提取任何.eps文件。

Hyman@theitroad:$unzip webdesign.zip -x *.eps
Archive:  webdesign.zip
  inflating: 339252-PAJF05-394.ai    
  inflating: 339252-PALBTI-224.ai    
  inflating: 339252-PALBTM-53.jpg   
  inflating: License free.txt        
  inflating: License premium.txt