24.gzip、unzip命令详解
gzip命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
注意:压缩完成后会删除原文件
语法:
gzip [选项] 压缩(解压缩)的文件名
各选项的含义:
-c 将输出写到标准输出上,并保留原有文件。 -d 将压缩文件解压。 -l 对每个压缩文件,显示下列字段:压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字 -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。 -t 测试,检查压缩文件是否完整。 -v 对每一个压缩和解压的文件,显示文件名和压缩比。 -num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
假设一个目录/home下有文件mm.txt、sort.txt、xx.com。
例1:把/home目录下的每个文件压缩成.gz文件。
$ cd /home $ gzip * $ ls m.txt.gz sort.txt.gz xx.com.gz
例2:把例1中每个压缩的文件解压,并列出详细的信息。
$ gzip -dv * mm.txt.gz 43.1%-----replaced with mm.txt sort.txt.gz 43.1%-----replaced with sort.txt xx.com.gz 43.1%-----replaced with xx.com $ ls mm.txt sort.txt xx.com
例3:详细显示例1中每个压缩的文件的信息,并不解压。
$ gzip -l * comcodessed uncompr. ratio uncomcodessed_name 277 445 43.1% mm.txt 278 445 43.1% sort.txt 277 445 43.1% xx.com $ ls mm.txt.gz sort.txt.gz xx.com.gz
例4:压缩一个tar备份文件,如usr.tar,此时压缩文件的扩展名为.tar.gz
$ gzip usr.tar
$ ls
usr.tar.gz
:gzip -d *.gz
gunzip命令
Gunzip是一个用于解压缩Gzip文件的命令行工具,Gzip是最流行的压缩算法之一,它可以减小文件的大小并保留原始文件模式、所有权和时间戳。按照惯例,使用Gzip压缩的文件将被赋予.gz或.z扩展名。在本文中,我们将解释如何使用gunzip命令。
注意:解压完成后会删除原文件
用gunzip解压缩文件
gunzip命令的一般语法如下:
gunzip [OPTION]... [FILE]...
在大多数Linux发行版上,例如Ubuntu、CentOS和Debian,gunzip是gzip -d命令的bash脚本包装器。
所有gzip命令行选项都适用于gunzip。
要使用gunzip解压缩.gz文件,请将压缩文件名作为参数传递:
$ gunzip filename.gz
该命令将压缩文件恢复为其原始名称、所有者、模式和时间戳。
默认情况下,一旦解压缩,gunzip将删除压缩文件,使用-k选项保留文件:
$ gunzip -k filename.gz
要在终端上写入输出,请使用-c选项,这允许你保留压缩文件并可选地将其解压缩到另一个位置:
$ gunzip -c filename.gz > /directory/path/filename
gunzip命令还接受多个文件作为参数:
$ gunzip file1.gz file2.gz file3.gz
要递归解压缩给定目录中的所有文件,请使用-r选项:
$ gunzip -r directory
列出压缩文件内容
与-l选项一起使用时,gunzip显示有关给定压缩文件的信息:
$ gunzip -l filename.gz
输出将包括未压缩的文件名,压缩和未压缩的大小以及压缩率:
要获得更详细的输出,请使用-v选项:
$ gunzip -lv filename
会输出如下信息:
zip命令
Linux zip 命令用于压缩文件。
zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
参数:
-A:调整可执行的自动解压缩文件; -b<工作目录>:指定暂时存放文件的目录; -c:替每个被压缩的文件加上注释; -d:从压缩文件内删除指定的文件; -D:压缩文件内不建立目录名称; -f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中; -F:尝试修复已损坏的压缩文件; -g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件; -h:在线帮助; -i<范本样式>:只压缩符合条件的文件; -j:只保存文件名称及其内容,而不存放任何目录名称; -J:删除压缩文件前面不必要的数据; -k:使用MS-DOS兼容格式的文件名称; -l:压缩文件时,把LF字符置换成LF+CR字符; -ll:压缩文件时,把LF+cp字符置换成LF字符; -L:显示版权信息; -m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中; -n<字尾字符串>:不压缩具有特定字尾字符串的文件; -o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同; -q:不显示指令执行过程; -r:递归处理,将指定目录下的所有文件和子目录一并处理; -S:包含系统和隐藏文件; -t<日期时间>:把压缩文件的日期设成指定的日期; -T:检查备份文件内的每个文件是否正确无误; -u:更换较新的文件到压缩文件内; -v:显示指令执行过程或显示版本信息; -V:保存VMS操作系统的文件属性; -w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效; -x<范本样式>:压缩时排除符合条件的文件; -X:不保存额外的文件属性; -y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效; -z:替压缩文件加上注释; -$:保存第一个被压缩文件所在磁盘的卷册名称; -<压缩效率>:压缩效率是一个介于1~9的数值。
用法
1.将/home/data 这个目录下的所有文件打包压缩为当前目录下的data.zip
zip -q -r data.zip /home/data
2.如果现在在/home 这个目录下,则如下
zip -q -r data.zip data
3.如果在/home/data 这个目录下,则如下
zip -q -r data.zip *
以上三种效果一样。
unzip命令
压缩/解压缩操作后,源文件仍然保留
用MS Windows下的压缩软件winzip压缩的文件如何在Linux系统下展开呢?可以用unzip命令,该命令用于解扩展名为.zip的压缩文件。
语法:
unzip [选项] 压缩文件名.zip
各选项的含义分别为:
-x 文件列表 解压缩文件,但不包括指定的file文件。 -v 查看压缩文件目录,但不解压。 -t 测试文件有无损坏,但不解压。 -d 目录 把压缩文件解到指定目录下。 -z 只显示压缩文件的注解。 -n 不覆盖已经存在的文件。 -o 覆盖已存在的文件且不要求用户确认。 -j 不重建文档的目录结构,把所有文件解压到同一目录下
例1:将压缩文件text.zip在当前目录下解压缩。
$ unzip text.zip
例2:将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
$ unzip -n text.zip -d /tmp
例3:查看压缩文件目录,但不解压。
$ unzip -v text.zip
zgrep命令
这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令一样,只不过操作的对象是压缩文件。如果用户想看看在某个压缩文件中有没有某一句话,便可用zgrep命令。
参考:https://www.cnblogs.com/chyong168/archive/2012/03/23/2413628.html
https://www.cnblogs.com/black-humor/p/8962499.html
https://ywnz.com/linuxml/5902.html