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

文章目录

  • zip
    • zip支持的选项有:
    • -A 详细解释
    • -d (对压缩包操作)
    • -e (对压缩文件加密)
    • -f(只更新文件)
    • -g(不显示压缩过程)
    • -r (文件夹必选)
    • -u(对zip操作)
    • -v (很鸡肋没什么用)
    • -x(压缩时排除某些文件)
  • unzip
    • unzip支持的选项有
    • -d 指定目录
    • -l 查看文件
    • -n不覆盖已有文件
    • -o 覆盖已有文件
    • -v
  • tar命令
    • tar支持的选项有
    • -c 压缩
    • -x 解压
    • -t 查看
    • -r 添加
    • --delete 删除
  • 参考文档

zip

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支持的选项有

选项 说明
-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 仅显示压缩文件的备注文字。
-Z unzip -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支持的选项有

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

-c 压缩

  • 压缩当前目录下的tar目录,压缩包的名字叫test.tar.gz
    tar -cvzf test.tar.gz
    
  • 压缩当前目录下的.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
    

参考文档

  • Linux命令 - zip命令
  • Linux命令 - unzip命令
  • Linux命令之压缩zip
  • tar命令的详细解释

你可能感兴趣的:(个人笔记,linux,数据库,前端)