Linux中文件的压缩与解压缩命令操作示例集锦

   所谓压缩就是将原有的文件通过不同的编码技术进行运算,以减少数据存储所需要的空间,使用前再利用解压缩还原源文件的内容即可。

  和windows一样,在linux下也存在多种压缩与解压缩方法。

  1、zip压缩与解压缩

  zip是最为广泛使用的压缩程序,经它压缩的文件会产生扩展名为zip的压缩文件,而且这种格式在多种系统上可以使用,像windows中的winzip

  下面看一下在linux中如何建立zip文件。

  我们在终端中输入zip会出现这个命令的一些介绍和参数的意义。

  代码如下:

  xiaopeng@ubuntu:~/test$ zip

  Copyright (c) 1990-2006 Info-ZIP - Type 'zip "-L"' for software license.

  Zip 2.32 (June 19th 2006). Usage:

  zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]

  The default action is to add or replace zipfile entries from list, which

  can include the special name - to compress standard input.

  If zipfile and list are omitted, zip compresses stdin to stdout.

  -f freshen: only changed files -u update: only changed or new files

  -d delete entries in zipfile -m move into zipfile (delete files)

  -r recurse into directories -j junk (don't record) directory names

  -0 store only -l convert LF to CR LF (-ll CR LF to LF)

  -1 compress faster -9 compress better

  -q quiet operation -v verbose operation/print version info

  -c add one-line comments -z add zipfile comment

  -@ read names from stdin -o make zipfile as old as latest entry

  -x exclude the following names -i include only the following names

  -F fix zipfile (-FF try harder) -D do not add directory entries

  -A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)

  -T test zipfile integrity -X eXclude eXtra file attributes

  -y store symbolic links as the link instead of the referenced file

  -R PKZIP recursion (see manual)

  -e encrypt -n don't compress these suffixes

  下面我们就最简单的实验一下。我们就是把当前目录下文件名以test开头的所有文件压缩文一个文件,并可以查看一下压缩比。(红色是我的注释)

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 24K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  代码如下:

  xiaopeng@ubuntu:~/test$ zip test.zip test*

  zip命令后面先跟压缩后的文件名,这里是test.zip,当然后缀名不是必须的。然后跟要压缩的文件名。这里用的test*指的是全部以test开头的文件,包括test1 test2 test3 test4

  adding: test1 (deflated 30%) 这里显示的是压缩比

  adding: test2 (deflated 65%)

  adding: test3 (deflated 64%)

  adding: test4 (deflated 73%) 大体可以看出源文件越大,压缩比就越大

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 32K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  -rw-r--r-- 1 xiaopeng xiaopeng 5.0K 2009-06-25 14:17 test.zip

  xiaopeng@ubuntu:~/test$

  上面是压缩了相同类型的文件,其实也可以把不同类型的文件压缩到一起。有时候为了节省硬盘空间,可以在建立压缩文件后,自动删除原始文件,此时只要带一个 -m 的参数就可以。

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 24K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  xiaopeng@ubuntu:~/test$ zip -m test.zip test* 带参数-m

  updating: test1 (deflated 30%)

  updating: test2 (deflated 65%)

  updating: test3 (deflated 64%)

  updating: test4 (deflated 73%)

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 8.0K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 5.0K 2009-06-25 14:26 test.zip

  xiaopeng@ubuntu:~/test$

  可以看出 原始文件已经被删除,只有压缩文件留下了。

  在压缩一些目录的时候,经出在目录中会有子目录,此时根据子目录中的文件是否压缩分为两种情况,一种是压缩,一种是忽略自录中的内容,如果选择压缩子目录,则使用-r参数,如果不压缩,则使用-j 参数

  下面举例,一个是-r 一个是-j

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 28K

  代码如下:

  drwxr-xr-x 2 xiaopeng xiaopeng 4.0K 2009-06-25 14:31 pdf

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  xiaopeng@ubuntu:~/test$ zip -r test.zip * 压缩当前目录所有内容,r 参数说明pdf这个子目录中的内容也压缩

  adding: pdf/ (stored 0%)

  adding: pdf/case_Contact.pdf (deflated 10%)

  adding: pdf/case_KRUU.pdf (deflated 9%)

  adding: pdf/case_howard_county_library.pdf (deflated 24%)

  adding: test1 (deflated 30%)

  adding: test2 (deflated 65%)

  adding: test3 (deflated 64%)

  adding: test4 (deflated 73%)

  xiaopeng@ubuntu:~/test$

  下面的情况是子目录不压缩

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -l

  总用量 28

  代码如下:

  drwxr-xr-x 2 xiaopeng xiaopeng 4096 2009-06-25 14:31 pdf

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1233 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3412 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 10091 2009-06-25 14:14 test4

  xiaopeng@ubuntu:~/test$ zip -j test.zip *

  adding: test1 (deflated 30%)

  adding: test2 (deflated 65%)

  adding: test3 (deflated 64%)

  adding: test4 (deflated 73%)

  子目录pdf被忽略

  代码如下:

  xiaopeng@ubuntu:~/test$

  令外一个技巧: 某些文件因为编码的原因,已经大幅的减少了文件的大小,如GIF,JPG 等格式,在用zip压缩几乎没什么作用而浪费了时间,此时可一用-n参数直接保存这些文件而不压缩。例如:

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 68K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 18K 2009-06-04 21:18 duality.jpg

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  -rw-r--r-- 1 xiaopeng xiaopeng 23K 2009-06-10 15:07 test.jpg

  xiaopeng@ubuntu:~/test$ zip -n .jpg test.zip *

  adding: duality.jpg (stored 0%)

  adding: test1 (deflated 30%)

  adding: test2 (deflated 65%)

  adding: test3 (deflated 64%)

  adding: test4 (deflated 73%)

  adding: test.jpg (stored 0%)

  jpg格式的没有压缩而是直接保存了

  代码如下:

  xiaopeng@ubuntu:~/test$

  如果需要直接保存的格式多于一个,可以用冒号隔开 如: -n .jpg: .mpg

  小技巧,有时候一个目录下要压缩的文件很多,但是有那么很少的几个不压缩,那么我们可以用-x参数来排除这几个不压缩的。例如

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  duality.jpg test1 test2 test3 test4 test.jpg test.zip

  xiaopeng@ubuntu:~/test$ zip -n .jpg test.zip * -x test2 不压缩test2

  updating: duality.jpg (stored 0%)

  updating: test1 (deflated 30%)

  updating: test3 (deflated 64%)

  updating: test4 (deflated 73%)

  updating: test.jpg (stored 0%)

  xiaopeng@ubuntu:~/test$

  可以看到test2没有被压缩,而是直接跳过了它。

  压缩链接,zip会先读取该链接的指向的原文件的内容,然后再压缩,而且压缩完了,该链接也就不存在了。

  另外,压缩率也是可以调整的。等级是1到9,1最低,9最高,默认是6 。我们可以用1和9来比较下,压缩率。

  代码如下:

  xiaopeng@ubuntu:~/test$ zip -1 low.zip *

  adding: test1 (deflated 30%)

  adding: test2 (deflated 63%)

  adding: test3 (deflated 62%)

  adding: test4 (deflated 70%)

  xiaopeng@ubuntu:~/test$ zip -9 high.zip *

  adding: low.zip (deflated 4%)

  adding: test1 (deflated 30%)

  adding: test2 (deflated 65%)

  adding: test3 (deflated 64%)

  adding: test4 (deflated 73%)

  因为文件都比较小,效果不是很明显,但是9的压缩率确实高了一点点。

  压缩率高,节省空间,但是压缩时间要长,压缩率低,节省空间少,但是用时间少,所以我们要合理选择压缩率,一般都用默认。

  zip文件解压缩。这个比较简单,就是unzip命令。

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  test.zip

  xiaopeng@ubuntu:~/test$ unzip test.zip

  Archive: test.zip

  inflating: test1

  inflating: test2

  inflating: test3

  inflating: test4

  xiaopeng@ubuntu:~/test$

  当然也可以用-x参数来指定哪个文件不需要压缩。

  代码如下:

  xiaopeng@ubuntu:~/test$ unzip test.zip -x test3 test3不需要压缩出来

  Archive: test.zip

  inflating: test1

  inflating: test2

  inflating: test4

  xiaopeng@ubuntu:~/test$

  还有一个很有用的参数,-Z ,注意是大写的Z 。作用是查看压缩文件的内容。就像windows中的winzip,我们不用解压缩,也可以打开看看里面有什么文件,文件的类型什么。比如我想看看test.zip里面的内容,而又不想把这个解压缩了再看,可以如下操作。

  代码如下:

  xiaopeng@ubuntu:~/test$ unzip -Z test.zip

  Archive: test.zip 5069 bytes 4 files

  -rw-r--r-- 2.3 unx 212 tx defN 25-Jun-09 14:13 test1

  -rw-r--r-- 2.3 unx 1233 tx defN 25-Jun-09 14:13 test2

  -rw-r--r-- 2.3 unx 3412 tx defN 25-Jun-09 14:14 test3

  -rw-r--r-- 2.3 unx 10091 tx defN 25-Jun-09 14:14 test4

  4 files, 14948 bytes uncompressed, 4567 bytes compressed: 69.4%

  xiaopeng@ubuntu:~/test$

  当然除了这些参数外,还有很多参数可以使用,这里就不一一实验了,我们可以在使用的过程中加以掌握。

  2、zip与 tar

  如果你在Linux里面安装过软件压缩包,对这个以.tar.gz为后缀的压缩文件不会陌生,比如我们在Linux QQ 的下载页面http://im.qq.com/qq/linux/download.shtml ,就会看到其中一个安装包就是.tar.gz包。

  这种包带两个后缀是有原因的,gz和tar 是分别由两种程序产生的。gz时由gzip压缩而成的压缩文件,压缩效果和zip差不多,但是和zip最大的不同在于,gzip无法把很多个单一文件压缩成一个单一文件,所以tar就有了用武之地,tar不是什么压缩程序,它是用来打包文件的。tar和gzip一见如故,两个人合作起来实现压缩,也就是当多个文件压缩时,先用tar把这些文件打包,成为.tar的包,然后再由gzip压缩这个包,于是就有了.tar.gz的文件格式。

  首先先看一下gzip和 gunzip的应用。gzip的用法很简单,后面加上要压缩的文件名就行。

  代码如下:

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 24K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 15:49 test1

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  xiaopeng@ubuntu:~/test$ gzip test1

  xiaopeng@ubuntu:~/test$ ls -lh

  总用量 24K

  代码如下:

  -rw-r--r-- 1 xiaopeng xiaopeng 173 2009-06-25 15:49 test1.gz

  -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2

  -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3

  -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4

  注意和zip的不同,只要在命令后加上要压缩的文件名即可,系统会自动为生成的压缩文件起名为原文件名加后缀.gz ,而且原文件在压缩完成后会被删除。

  解压缩用gunzip

  代码如下:

  xiaopeng@ubuntu:~/test$ gunzip *.gz

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4

  xiaopeng@ubuntu:~/test$

  完成后以前的压缩文件test1.gz也会被删除。

  同样gzip在解压前也可以查看文件内容,用参数-l,

  gzip也支持压缩率修改,为1到9,和zip相同。

  下面看tar的用应。tar是用来打包文件的,打包后的包的大小和以前所有原文件大小的和是相等的,(其实大小是不相等的,打完包后的大小大于源文件的大小和,这个可以验证一下。《Ubuntu 入门到精通》说一样大,显然是不对的)也就是说tar没有压缩的效果。tar有非常多的参数,可以通过在线帮助文档查看,或者用--help命令查看。这里我们只用简单用到几个。

  首先是多个文件打包。看例子。

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4

  xiaopeng@ubuntu:~/test$ tar -cvf test.tar *

  是把当前目录下的所有文件打包成test.tar 几个参数的意义为: c(Creat)建立新文件 v(Verbose)显示命令执行时的信息 f(File)指定打包为文件形式。

  代码如下:

  test1

  test2

  test3

  test4

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4 test.tar

  xiaopeng@ubuntu:~/test$

  要解开tar文件,只需把参数中的c改为x(eXtract)即可

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  test.tar

  xiaopeng@ubuntu:~/test$ tar -xvf test.tar

  test1

  test2

  test3

  test4

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4 test.tar

  xiaopeng@ubuntu:~/test$

  下面我们看一下tar和gzip合作完成对4个文件的压缩。步骤是先用tar打包,然后对这个.tar包用gzip压缩,最后得到.tar.gz文件。例子:

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4

  xiaopeng@ubuntu:~/test$ tar cvf test.tar * 首先打包成test.tar

  test1

  test2

  test3

  test4

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4 test.tar

  xiaopeng@ubuntu:~/test$ gzip test.tar 把test.tar用gzip压缩成test.tar.gz 压缩包。

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4 test.tar.gz

  xiaopeng@ubuntu:~/test$

  解压.tar.gz包时,和压缩过程相反,现解压,再tar把包打开。

  代码如下:

  xiaopeng@ubuntu:~/test$ ls

  test.tar.gz

  xiaopeng@ubuntu:~/test$ gunzip test.tar.gz 先用gunzip把.tar.gz包解压缩

  xiaopeng@ubuntu:~/test$ ls

  test.tar

  xiaopeng@ubuntu:~/test$ tar xvf test.tar 然后用tar把.tar包打开

  test1

  test2

  test3

  test4

  xiaopeng@ubuntu:~/test$ ls

  test1 test2 test3 test4 test.tar

  xiaopeng@ubuntu:~/test$

  还可以tar 和gzip同时实现的,只要在tar参数加一个z即可 tar -xvfz test.tar.gz 即可实现上面两个命令的功能。

  还是比较好理解的。

时间: 2025-01-19 04:54:23

Linux中文件的压缩与解压缩命令操作示例集锦的相关文章

Linux中文件的五个查找命令总结_unix linux

Linux的查找命令有5个,分别如下:     which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果:     type:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的.如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令.type命令其实不能算查找命令:     whereis:只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s):    

Linux中用于进程显示的top命令使用实例集锦

  Linux中的top命令显示系统上正在运行的进程.它是系统管理员最重要的工具之一.被广泛用于监视服务器的负载.在本篇中,我们会探索top命令的细节.top命令是一个交互命令.在运行top的时候还可以运行很多命令.我们也会探索这些命令.(注:不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助.) 1. Top 命令输出: 首先,让我们了解一下输出.top命令会显示系统的很多信息.我们需要理解不同部分输出的意义:默认运行时,top命令会显示如下输出: (默认显

Linux下的压缩与解压缩命令详细解析_unix linux

linux zip命令 zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o -d /home/sunny myfile.zip把myfile.zip文件解压到 /home/sunny/-o:不提示的情况下覆盖文件:-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他zip -d myfile.zip smart.txt删除压缩文件中

Android中文件的压缩和解压缩实例代码

使用场景 当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样会造成打包后的apk整体过大,此时就需要将放入的文件进行压缩.又如当我们需要从服务器中下载文件时,如果下载源文件耗时又消耗流量,较大文件需要压缩,可以使得传输效率大大提高.下面我们就学习下基本的文件压缩和解压缩.Java中提供了压缩和解压缩的输入输出流 public static void zip(String src,String dest) throwsIOException { //定义压缩输出流 Zip

php使用ZipArchive函数实现文件的压缩与解压缩_php技巧

PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下利用php zipArchive进行文件的压缩与解压缩的常用的示例供参考.一.解压缩zip文件 $zip=new ZipArchive;//新建一个ZipArchive的对象 if($zip->open('test.zip')===TRUE){ $zip->extra

Linux中的15个基本‘ls’命令示例

Linux中的15个基本'ls'命令示例 ls命令是Linux系统中最被频繁使用的命令之一,我相信ls命令一定是你进入一台Linux系统的电脑打开命令提示符后第一个使用的命令.我们每天都在频繁地使用ls命令,即使我们可能没有意识也从来用不到所有可用的选项.本文中,我们将讨论下一些基本的ls命令并且覆盖尽可能多的有关参数来讲解. Linux的ls命令 1. 不带任何选项列出文件 不带选项的ls命令来光秃秃地列出文件和目录,我们是不能看到像文件类型.大小.修改日期和时间.权限以及链接这样具体的信息的

Swift 使用SSZipArchive实现文件的压缩、解压缩代码

通常我们为了节约流量,传输多个文件的时候需要将它们打包成Zip文件再传输,或者把下载下来的Zip包进行解压.本文介绍如何使用 ZipArchive 进行文件的压缩.解压操作. 1,SSZipArchive介绍 SSZipArchive是一个使用Objective-C编写的在iOS.Mac下的压缩.解压缩工具类. GitHub地址:https://github.com/ZipArchive/ZipArchive 功能如下: (1)解压zip文件 (2)解压带密码保护的zip文件 (3)创建zip文

Linux中文件权限目录权限的意义及权限对文件目录的意义_linux shell

linux中目录与文件权限的意义 一.文件权限的意义 r:可以读这个文件的具体内容: w:可以编辑这个文件的内容,包括增加删除文件的具体内容: x:文件就具有了可执行的权限-------注意:这里和window不一样,在win中,文件的可执行权限是通过扩展名表现出来的,如exe.bat等,但是在linux中文件的可执行权限是通过这个x决定的,与文件名没有什么关系. 二.目录权限的意义 r:可以查看此目录下的完整文件列表信息. w:可以对此目录下的所有的文件及目录进行相关的更改,也就是可以更改这个

用gdb分析core文件及常见gdb命令操作示例

1.概述 在实际的软件开发项目中,程序出现问题是在所难免的.遥想本人参加工作之后首次遇到程序的情景,至今还历历在目.之前的经验告诉我,我们越是惊慌失措,问题就越是解决不了.我们要先让自己平静下来,然后再寻找解决程序问题的办法. 在Linux下做开发的朋友,想必都与core文件打过交道.当看到自己的程序运行之后出现core时,很多人都慌乱了,仿佛天快要塌下来一样.其实,我们大可不必如此,只要我们掌握了用gdb调试core文件的办法,依然可以很快定位程序问题,一举将bug消灭掉.有关Linux co