Linux命令(6)zip命令

zip命令

zip 压缩包在 Windows 和 Linux 都比较常见的,zip命令本身即能归档又能压缩。

  • 功能说明:对一个文件或多个文件进行压缩

  • 用法:zip [选项] 压缩文件名.zip FILE…

    选项作用
    -r对目录下的文件及子目录进行递归压缩
    -d从压缩文件内删除指定文件
    -q压缩时不显示命令执行过程
    -x压缩时排除某些文件不压缩

示例:复制/var/log/messages到/tmp/compress目录并对messages文件进行压缩。

[ ~]# cd /tmp/ && mkdir compress
[ tmp]# cd compress
[ compress]# cp /var/log/messages ./
[ compress]# ll -h
total 44K
-rw------- 1 root root 42K Feb 25 14:38 messages
[ compress]# zip messages.zip messages 
  adding: messages (deflated 94%)
[ compress]# ll -h
total 48K
-rw------- 1 root root  42K Feb 25 14:38 messages
-rw-r--r-- 1 root root 2.9K Feb 25 14:39 messages.zip

说明: zip 后面先跟目标文件名,也就是压缩后的自定义压缩包名,然后是要压缩的文件或者目录。

示例:将/var/log下的所有目录及文件复制到/tmp目录,并使用zip进行归档。

[ compress]# cp -r /var/log/ /tmp/
[ compress]# du -sh /tmp/log/
3.9M    /tmp/log/
[ compress]# cd ..
[ tmp]# zip -r -q log.zip log/
[ tmp]# ll -h
total 416K
drwxr-xr-x 2 root root   42 Feb 25 14:39 compress
drwxr-xr-x 8 root root 4.0K Feb 25 14:40 log
-rw-r--r-- 1 root root 411K Feb 25 14:42 log.zip

示例:生成1..10.txt的文件,压缩时不对10.txt进行压缩。

[ tmp]# mkdir test
[ tmp]# cd test/
[ test]# for i in {1..10}.txt;do touch $i;done
[ test]# ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
[ test]# zip text.zip *.txt -x 10.txt
  adding: 1.txt (stored 0%)
  adding: 2.txt (stored 0%)
  adding: 3.txt (stored 0%)
  adding: 4.txt (stored 0%)
  adding: 5.txt (stored 0%)
  adding: 6.txt (stored 0%)
  adding: 7.txt (stored 0%)
  adding: 8.txt (stored 0%)
  adding: 9.txt (stored 0%)

unzip命令

  • 功能说明:对zip压缩文件进行解压缩

  • 用法:unzip [选项] 压缩文件名.zip

    选项作用
    -l列出压缩文件内的文件
    -d指定文件解压后的目录,默认为当前目录
    -q解压时不显示命令执行过程
    -t测试压缩文件是否损坏

示例:解压text.zip压缩文件到当前目录。

[ test]# ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  text.zip
[ test]# rm -f *.txt
[ test]# unzip text.zip 
Archive:  text.zip
 extracting: 1.txt                   
 extracting: 2.txt                   
 extracting: 3.txt                   
 extracting: 4.txt                   
 extracting: 5.txt                   
 extracting: 6.txt                   
 extracting: 7.txt                   
 extracting: 8.txt                   
 extracting: 9.txt

示例:查看text.zip压缩文件中的信息。

[ test]# unzip -l text.zip 
Archive:  text.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  02-25-2018 14:44   1.txt
        0  02-25-2018 14:44   2.txt
        0  02-25-2018 14:44   3.txt
        0  02-25-2018 14:44   4.txt
        0  02-25-2018 14:44   5.txt
        0  02-25-2018 14:44   6.txt
        0  02-25-2018 14:44   7.txt
        0  02-25-2018 14:44   8.txt
        0  02-25-2018 14:44   9.txt
---------                     -------
        0                     9 files

示例:解压log.zip文件到/tmp/new目录

[ test]# cd ..
[ tmp]# ls
compress  log  log.zip  test
[ tmp]# unzip -q log.zip -d new/
[ tmp]# ll new/
total 4
drwxr-xr-x 8 root root 4096 Feb 25 14:40 log