对Linux上的各类型压缩格式的一个总结

房东的猫 提交于 2019-11-30 21:13:28

我使用的环境是64位的 Red Hat Enterprise Linux Server release 6.4 (Santiago)

1.compress与*.Z文件

compress程序的作用是:Compress reduces the size of the named files using adaptive Lempel-Ziv coding

即:使用自适应的Lempel-Ziv编码压缩文件

如果没有安装compress,输入compress命令后会提示错误:

-bash: compress: command not found

运行下面的命令可以进行安装:

yum install ncompress

(Arch: x86_64;Version: 4.2.4-54.el6_2.1)

将文件test压缩到test.Z

compress test

运行该命令后,test文件消失,新出现文件test.Z。解压缩此文件,则输入下面两个命令之一就可以了

compress -d test.Z
uncompress test.Z

compress命令无法对整目录进行压缩,只能压缩一个目录中的所有文件进行递归式压缩与解压缩

compress -r testdir
uncompress -r testdir

2.gzip与*.gz文件

在man中对gzip的描述是:gzip reduces the size of the named files using Lempel-Ziv coding(LZ77)

亦即使用Lempel-Zip编码(LZ77)对文件进行压缩

将文件test压缩为test.7gz,输入下面这个命令

gzip test

查看压缩后的文件内容,可以用zcat直接查看,如:

echo "abcd" > word
gzip word
zcat word

可以看到输出“abcd”

gunzip用于解压缩gz文件,解压缩之前的test.gz,可以使用如下命令:

gunzip test.gz

对目录中的文件递归式压缩和解压缩,需要添加参数 -r

gzip -r test
gunzip -r test.gz

3.bzip2与*.bz2文件

man中对bzip2的说明是:bzip2 compresses files using the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding

即使用Burrows-Wheeler块排序文本压缩算法和Huffman编码实现压缩文件

通过bzip2压缩文件的命令(二选一即可)

bzip2 test
bzip2 -z test

通过bzip2解压缩文件的命令(二选一即可)

bunzip2 test.bz2
bzip2 -d test.bz2

查看压缩后的文件,使用命令bzcat即可,用法与zcat类似,即“bzcat 文件名”

4.tar与*.tar、*.tar.gz、*tar.bz2、*.tar.xz文件

tar命令可以用于压缩目录,如有目录testdir,将其压缩到testdir.tar

tar -cvf testdir.tar testdir

-c:建立一个压缩档案

-v:压缩过程中显示档案

-f:使用档名(f必须作为最后一个参数,后面直接跟*.tar)

压缩后,原来的test不消失。如果要解压testdir.tar,输入命令:

tar -xvf testdir.tar

根据tar命令的参数,可以将目录testdir分别压缩成tar.gz格式、tar.bz2格式和tar.xz格式

1)tar.gz格式的压缩与解压缩(-z filter the achive through gzip)

tar -zcvf testdir.tar.gz testdir
tar -zxvf testdir.tar.gz

2)tar.bz2格式的压缩与解压缩(-j filter the archive through bzip2)

tar -jcvf testdir.tar.bz2 testdir
tar -jxvf testdir.tar.bz2

3)tar.xz格式的压缩与解压缩(-J filter the archive through xz)

tar -Jcvf testdir.tar.xz testdir
tar -Jxvf testdir.tar.xz

5.zip与*.zip文件

将目录testdir压缩到文件testdir.zip中,可用如下命令实现:

zip -r testdir.zip testdir

查看解压后zip文件中的内容:

unzip -v testdir.zip

将testdir.zip解压到当前目录(下面两个命令选一个运行即可)

unzip -o testdir.zip
unzip -o -d . testdir.zip

-o意为如果之前有重名文件,则覆盖它:overwrite existing files without prompting (dangerous option)

-d是压缩到的目录:an optional directory to which to extract files

现假设有一个文件word。向testdir.zip中添加文件word,可以用命令:(运行完毕后原来的word会消失)

zip -m testdir.zip word

从testdir.zip中删除文件word,可以用命令:(word被删除后就不存在了)

zip -d testdir.zip word

6.rar与*.rar

rar程序需要手动安装后才能使用

我从这个地址上下载了一个:http://www.rarlab.com/download.htm

下载的是:RAR 5.20 beta 4 for Linux x64

下载下来的文件名为:rarlinux-x64-5.2.b4.tar.gz;大小1.08MB

保存到自己的Linux系统后,解压缩这个文件

tar rarlinux-x64-5.2.b4.tar.gz

可以看到文件夹rar,进入后输入命令

make -f makefile

可以看到makefile调用了如下几个命令

mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

安装完毕!这个时候直接输入rar就可以查看rar的各个参数及意义了

将testdir压缩到testdir.rar,使用命令:

rar a testdir.rar testdir

将testdir.rar解压缩到当前目录,使用命令(二选一):

rar x testdir.rar
unrar e testdir.rar

7.7za和*.7z文件

7za也需要下载后手动安装

下载地址:http://sourceforge.net/projects/p7zip/files/p7zip/9.20.1/

下载文件:p7zip_9.20.1_x86_linux_bin.tar.bz2

下载到本地的Linux系统后,解压缩:

tar xjf p7zip_9.20.1_x86_linux_bin.tar.bz2

解压后可以看到目录 p7zip_9.20.1。用root权限调用里面的 install.sh 脚本

安装完毕!这个时候直接输入7za或命令“man 7za”就可以查看7za的各个参数及意义了

将目录testdir压缩到testdir.7z:

7za a -t7z testdir.7z testdir

各部分意义

1)a 添加文件

2)-t 压缩类型 这里选了7z(这个也是默认值)

3)testdir.7z 压缩后的文件名

4)testdir 被压缩的文件(可以是一个或多个的文件、目录)

将testdir.7z中的内容解压缩到当前文件夹:

7za x testdir.7z -r -o./

1)-r 递归解压缩所有子文件夹

2)-o 解压到指定目录(后面直接跟路径,没有空格)

8.一个用于解压缩文件的脚本

如果你觉得Linux中各种各样的压缩文件解压命令都不一样很麻烦,下面这个傻瓜脚本应该会有所帮助:

脚本:extract.sh

#!/bin/sh

if [ "$#" -ne 1 ]; then
    echo "输入参数:被解压缩文件"
    exit 0
fi

if [ -f "$1" ]; then
    case "$1" in
        *.tar ) tar xf $1 ;;
        *.tar.bz2 | *.tbz2 ) tar xjf $1 ;;
        *.tar.gz | *.tgz ) tar xzf $1 ;;
        *.bz2 ) bunzip2 $1 ;;
        *.gz ) gunzip $1 ;;
        *.zip ) unzip $1 ;;
        *.rar ) unrar e $1 ;;
        *.Z ) uncompress $1 ;;
        *.7z ) 7z x $1 ;;
        * ) echo 类型未识别 ;;    
    esac
else
    echo "$1":文件不存在或无权限
fi

exit 0

END

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!