linux系统的压缩、解压详细用法,附代码举例(感觉别人写的都不够好),tar,zip,unzip

zip

最常用

zip -r test.zip test

zip支持的选项有:

选项说明
-A调整可执行的自动解压缩文件。
-b<工作目录>指定暂时存放文件的目录。
-c替每个被压缩的文件加上注释。
-d从压缩文件内删除指定的文件。
-D压缩文件内不建立目录名称。
-e给压缩文件加密
-f更换较新的文件到压缩文件内。
-F尝试修复已损坏的压缩文件。
-g将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h在线帮助。
-i<范本样式>只压缩符合条件的文件。
-j只保存文件名称及其内容,而不存放任何目录名称。
-J删除压缩文件前面不必要的数据。
-k使用MS-DOS兼容格式的文件名称。
-l压缩文件时,把LF字符置换成LF+CR字符。
-ll压缩文件时,把LF+CR字符置换成LF字符。
-L显示版权信息。
-m将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串>不压缩具有特定字尾字符串的文件。
-o以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q不显示指令执行过程。
-r递归处理,将指定目录下的所有文件和子目录一并处理。
-S包含系统和隐藏文件。
-t<日期时间>把压缩文件的日期设成指定的日期。
-T检查备份文件内的每个文件是否正确无误。
-u此参数的效果和指定"-f"参数类似,但-u不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-v显示指令执行过程或显示版本信息。
-V保存VMS操作系统的文件属性。
-w在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式>压缩时排除符合条件的文件。
-X不保存额外的文件属性。
-y直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z替压缩文件加上注释。
-$保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率>压缩效率是一个介于1-9的数值。

-A 详细解释

  • 作者也没有理解 “调整可执行的自动解压缩文件”是什么意思

-d (对压缩包操作)

  • 压缩文件 cp.zip 中删除文件 a.c
    zip -dv cp.zip a.c 
    
  • 删除压缩文件 cp.zip 中子目录tmp中的文件a.c
    zip -dv cp.zip tmp/a.c 
    

-e (对压缩文件加密)

  • 需要输入两次相同的密码(密码复杂度没有要求)进行加密,输入完才开始压缩
    zip -er temp.zip ljj
    
    #无法对未加密的zip进行加密,下面这个会报错
    zip -e temp.zip
    
  • temp.zip 其他文件都不会被加密,只有查看 ljj.txt 才需要密码
    zip -eu temp.zip ljj.txt
    

-f(只更新文件)

  • 只能更新文件,如果文件不存在不会添加文件
  • 更新压缩包 test.zip 中的 test.txt 文件
    zip -f test.zip test.txt
    

-g(不显示压缩过程)

  • 使用这个参数所有过程都没了,除非报错,报错还是会显示的

-r (文件夹必选)

  • 如果不选这个,打包文件夹打包的文件夹就是空文件夹。只有加上了这个,文件夹下的文件和子目录的文件才会被一起打包
  • 把/home目录下面的mydata目录压缩为mydata.zip:
    zip -r mydata.zip mydata 
    
  • 把/home目录下面的mydata目录和a.txt压缩为mydata.zip:
    zip -r mydata.zip mydata a.txt
    

-u(对zip操作)

  • 如果ljj文件在压缩包中不存在,则添加到压缩包中。如果存在则比较时间,如果时间比较新则更新ljj.txt文件,如果没有比较新则不操作
    zip -u temp.zip ljj.txt
    

-v (很鸡肋没什么用)

  • 显示指令执行过程或显示版本信息。
  • 如果没有-v,只会显示stored。有-v 则会显示in、out、stored
    zip -rv temp.zip ljj
    
    zip -r temp.zip ljj
    
    在这里插入图片描述

-x(压缩时排除某些文件)

  • 压缩时排除 ljj 目录下的 a.txt 文件
    zip -rv temp.zip ljj -x '/ljj/a.txt'
    
  • 压缩时排除 ljj 目录下的 temp目录
    zip -rv temp.zip ljj -x '/ljj/temp/*'
    
    #这种写法是错的,会导致排除失效!!!!!
    zip -rv temp.zip ljj -x '/ljj/temp'
    
  • 压缩时排除 ljj 目录下所有目录下名字含有log的文件和文件夹
    zip -rv temp.zip ljj -x '/ljj/*/*log*'
    

unzip

最常用

unzip -o test.zip

unzip支持的选项有

选项说明
-a对文本文件进行必要的字符转换。
-b不要对文本文件进行字符转换。
-c将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-C压缩文件中的文件名称区分大小写。
-d<目录>指定文件解压缩后所要存储的目录。
-f更新现有的文件。
-j不处理压缩文件中原有的目录路径。
-l显示压缩文件内所包含的文件。
-L将压缩文件中的全部文件名改为小写。
-M将输出结果送到more程序处理。
-n解压缩时不要覆盖原有的文件。
-o不必先询问用户,unzip执行后覆盖原有文件。
-p与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-P<密码>使用zip的密码选项。
-q执行时不显示任何信息。
-s将文件名中的空白字符转换为底线字符。
-u与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-t检查压缩文件是否正确。
-v执行是时显示详细的信息。
-V保留VMS的文件版本信息。
-x<文件>指定不要处理.zip压缩文件中的哪些文件。
-X解压缩时同时回存文件原来的UID/GID。
-z仅显示压缩文件的备注文字。
-Zunzip -Z等于执行zipinfo指令。
[.zip文件]指定.zip压缩文件。
[文件]指定要处理.zip压缩文件中的哪些文件。

-d 指定目录

  • 将test.zip解压到/tmp目录下,并且覆盖已有文件
    unzip -o test.zip -d /tmp
    

-l 查看文件

  • 查看压缩文件中包含的文件
    unzip -l test.zip
    

-n不覆盖已有文件

  • 将test.zip解压,并且不覆盖已有文件
    unzip -n test.zip
    

-o 覆盖已有文件

  • 将test.zip解压,并且覆盖已有文件
    unzip -o test.zip
    

-v

  • 查看压缩文件目录信息,但是不解压该文件
    unzip -v test.zip
    

tar命令

最常用

  • 解压
tar -xvzf test.tar.gz
  • 压缩
tar -cvzf test.tar.gz temp

tar支持的选项有

选项说明
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
-c压缩(建立压缩档案)
-x解压
-t查看内容
-r向压缩归档文件末尾追加文件
-u更新原压缩包中的文件
下面的参数是根据需要在压缩或解压档案时可选的。
-z有gzip属性的
-j有bz2属性的
-Z有compress属性的
-v显示所有过程
-O将文件解开到标准输出
–delete从存档中删除 注意是两个减号。

-c 压缩

  • 压缩当前目录下的temp目录,压缩包的名字叫test.tar.gz
    tar -cvzf test.tar.gz temp
    
  • 压缩当前目录下的.c为后缀的文件。但是不能压缩以.开头的文件
    tar -cvzf test.tar.gz  ./*.c
    
  • 将tar文件夹下的文件生成一个test.tar归档文件
    tar -cvf test.tar tar
    

-x 解压

  • 解压test.tar.gz到当前目录下面
    tar -xvzf test.tar.gz
    
  • 释放test.tar归档文件中的内容到 当前目录下
    tar  -xvf  test.tar
    

-t 查看

  • 查看当前目录下test.tar.gz压缩文件中的文件
    tar -tvf test.tar.gz
    
  • 查看归档文件中的内容
    tar -tvf test.tar 
    

-r 添加

  • 将test1文件夹中的所有文件,添加到test.tar 归档文件中
    tar -rf test.tar  ./test1
    

–delete 删除

  • 删除test.tar文件中的 a.c文件
    tar -f test.tar --delete a.c
    
  • 删除test.tar文件中的 以.c结尾的文件
    tar -f test.tar --delete *.c
    

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值