Linux中的压缩和解压缩命令zip|tar

一、 zip

1. 使用zip压缩文件

若使用zip来将文件夹a压缩为a.zip,那么它的语法应该为

语法:zip -q -r [压缩文件名] [被压缩文件或文件夹]
示例:zip -q -r a.zip a/

其中
-r代表 recursive,代表递归处理,将指定目录下的所有文件和子目录一并处理。
-q代表 quiet,代表无声模式,不输出压缩时的具体细节。

当然zip还有其他的压缩参数,详见文档。

2.使用zip来从已压缩文件中删除文件

它的语法及其示例为

语法:zip -d [压缩文件名] [要删除的文件(可为多个,用空格隔开)] --out [新的压缩文件]
示例:
zip -d a.zip a/test.cpp a/test2.cpp
zip -d a.zip a/test.cpp a/test2.cpp --out b.zip

其中
-d 表示delete, 即删除

3. 查看压缩包中的文件

它的语法及其示例为

语法:zip -sf [压缩文件]
示例:zip -sf a.zip

其中
-sf 代表show files,可以使用–show-files命令代替

二、unzip

1. 使用unzip来解压缩文件

它的语法及其示例为:
(1) 只解压缩部分文件

语法:unzip [压缩文件包] [想要解压缩的压缩包中的文件] [-d [解压缩目录]] 
示例:unzip a.zip a/test.cpp -d ./

(2)解压缩时排除部分文件

语法:unzip [压缩文件包] [-d [解压缩目录]] [-x [要排除的文件]]
示例:unzip a.zip -d ./ -x a/test2.cpp
2. 使用unzip查看压缩包中的文件

跟zip一样,unzip一样可以用来查看压缩包中的文件而不解压缩

语法:unzip -v [压缩文件包]
示例:zip -v a.zip
语法:unzip -l [压缩文件包]
示例:zip -l a.zip

以上两个命令均可以查看目录结构

三、tar

严格来讲tar并不是一个压缩命令,而是一个打包命令,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,这时我们可以直接在tar命令参数里面添加相应的参数就可以在打包后调用其他压缩工具比如gzip、bzip2等进行压缩。

这里,我们先对常用的参数选项进行介绍,然后介绍他们的应用

选项 作用
-c --create 表示打包生成一个新的archive(档案文件),默认使用递归的方式进行打包,除非使用–no-recursion进行限定
-f --file 指定包的名字,这个参数是最后一个参数,后面只能接档案名。
-r --append 把文件添加到已有的archive中去
-u --update 把新的版本的文件更新到包含旧文件的archinve中
-t --list 展示archive中所有的内容
-x --extract 将archive解开
–delete 从archive中删除某些文件
-A --catenate --concatenate 将一个archive附加到另外一个archive后面
-C --directory=DIR 在进行打包或打包操作前先转到目标目录
压缩选项 作用
-a, --auto-compress 根据文件名自动选择压缩程序
-j, --bzip2 使用bzip2压缩工具进行压缩或解压缩
-J, --xz 使用xz压缩工具进行压缩或解压缩
-z, --gzip, --gunzip, --ungzip 使用gzip压缩工具进行压缩或解压缩
-Z, --compress, --uncompress 使用compress压缩工具进行压缩或解压缩
1. 使用tar命令进行打包
语法:tar [-参数选项] [包名字] [要打包的文件]
示例:
tar -cf all.tar *.jpg
tar -rf all.tar *.gif
tar -uf all.tar logo.gif

-cf代表打包到一个新的档案文件
-rf代表打包到已有的档案文件
-uf代表更新新版本的文件到已有的档案文件

2. 使用tar命令来解开包
语法:tar [-参数选项] [包名字] -C [解开包存放目录]
示例:
tar -xf all.tar -C /home/
3. 使用tar和gzip压缩和解压缩

gzip 是 GNU 组织开发的一个压缩程序,.gz 结尾的文件就是 gzip 压缩的结果。与 gzip 相对的解压程序是 gunzip。tar 中使用 -z 这个参数来调用gzip。下面来举例说明一下:
(1)压缩

tar -czf all.tar.gz *.jpg

(2)解压缩

tar -xzf all.tar.gz -C \home\

即解压缩到\home目录,事实上在压缩时也可以利用-C指定压缩包存放目录。

4. 使用tar和bz2压缩和解压缩

bzip2 是一个压缩能力更强的压缩程序,.bz2 结尾的文件就是 bzip2 压缩的结果。

与 bzip2 相对的解压程序是 bunzip2。tar 中使用 -j 这个参数来调用 bzip2。下面来举例说明一下:
(1)压缩

tar -cjf all.tar.bz2 *.jpg

(2)解压缩

tar -xjf all.tar.bz2 \home\
5. 使用tar和compress压缩和解压缩

compress 也是一个压缩程序。.Z 结尾的文件就是 compress压缩的结果。与 compress 相对的解压程序是 uncompress。tar 中使用 -Z 这个参数来调用 compress。下面来举例说明一下:
(1)压缩

tar -cZf all.tar.Z *.jpg

(2)解压缩

tar -xZf all.tar.Z \home\
6. 使用tar查看压缩文件内容
tar -tf all.tar

7. 使用tar删除压缩文件中的内容

tar --delete -f all.tar logo.gif

四、总结

事实上,当不使用tar先进行打包,而使用gzip等工具直接压缩时,我们可以直接使用gzip对其进行直接解压而不使用tar工具(见本节第3小节)。

对于多种文件类型,总结如下:

1. 压缩
tar –cvf jpg.tar *.jpg       // 将目录里所有jpg文件打包成 tar.jpg 
tar –czf jpg.tar.gz *.jpg    // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz 
tar –cjf jpg.tar.bz2 *.jpg   // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2 
tar –cZf jpg.tar.Z *.jpg     // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z 
rar a jpg.rar *.jpg          // rar格式的压缩,需要先下载 rar for linux 
zip jpg.zip *.jpg            // zip格式的压缩,需要先下载 zip for linux
2. 解压缩
tar –xvf file.tar         // 解压 tartar -xzvf file.tar.gz     // 解压 tar.gz 
tar -xjvf file.tar.bz2    // 解压 tar.bz2 
tar –xZvf file.tar.Z      // 解压 tar.Z 
unrar e file.rar          // 解压 rar 
unzip file.zip            // 解压 zip 
3. 汇总
*.tar 用 tar –xvf 解压 
*.gz 用 gzip -d或者gunzip 解压 
*.tar.gz和*.tgz 用 tar –xzf 解压 
*.bz2 用 bzip2 -d或者用bunzip2 解压 
*.tar.bz2用tar –xjf 解压 
*.Z 用 uncompress 解压 
*.tar.Z 用tar –xZf 解压 
*.rar 用 unrar e解压 
*.zip 用 unzip 解压

五、参考资料:

【1】https://www.runoob.com/w3cnote/linux-tar-gz.html

你可能感兴趣的:(linux,linux,zip,gzip)