当前目录可能已经存在包中的文件,如果不想解压出来的文件覆盖当前已存在的文件,可使用-k参数(会抛出错误信息):
tar?-xvkf?test.tar.gz
特别提醒
前面所提到的解压或者压缩带的f参数需要放在最后,因为它指定了压缩包名字,否则会出现解压或压缩失败。
zip和unzip命令主要用于处理zip包。
压缩
涉及参数说明:
-d?从压缩文件内删除指定的文件。
-f?此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-j?只保存文件名称及其内容,而不存放任何目录名称。
-r?递归处理,将指定目录下的所有文件和子目录一并处理。
-u?更换较新的文件到压缩文件内。
-v?显示指令执行过程或显示版本信息。
-y?直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-?<压缩效率>?压缩效率是一个介于1-9的数值。
压缩文件
zip?-r?test.zip?test/?#打包test目录下的文件
zip?-rj?test.zip?test/?#打包test目录下文件,且压缩包不带test目录
指定压缩率打包文件
zip?-r8?test.zip?test/*?#数值(1-9)越大,压缩率越高,耗时越长
打包符号链接文件
前面的命令只能打包普通文件,如果想要打包符号链接文件,则需要使用参数-y:
zip??-ry?test.zip?test
向压缩包中增加或更新文件
有时候需要向压缩包中增加文件,但又不想重新解压打包,可以使用参数-u:
zip?-u?test.zip?test2?#向test.zip?包中增加test2文件
压缩时加密
压缩时如果需要对压缩包进行加密,可使用-P参数:
zip?-r?test.zip?test1?test?-P?66666?#使用密码66666加密
删除压缩包的特定文件
zip?-d?test.zip?test??#删除test.zip包中的test文件
涉及参数说明:
-l?显示压缩文件内所包含的文件
-j?只保存文件名称及其内容,而不存放任何目录名称。
-o?以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该
-v?显示指令执行过程或显示版本信息。
-d?指定解压目录,目录不存在会创建
查看压缩包中的文件信息
unzip?-l?test.zip?#可以看到压缩包中的文件名,日期等信息
unzip?-v?test.zip?#查看更多信息,例如crc校验信息等
解压压缩包
unzip?-o?test.zip?-d?dir?#讲test.zip解压到dir目录
解压包中指定的文件
如果不知道需要解压的文件名,可先查看包中的文件,然后使用下面的方法:
unzip?-o?test.zip?"1.log"?-d?dir?#解压包中的1.log文件到dir目录
unzip?-o?tet.zip?"*.log"?-d?dir??#解压包中所有的log文件
解压时去掉目录结构
压缩包中有多层目录结构,普通解压仍然会保留目录结构,如果只想要压缩包中的文件,可以使用-j参数:
zip?-oj?test.zip?-d?./temp??
解压jar包
jar包是java归档包,但同样可用unzip解压查看里面的文件:
unzip?-o?java.jar?-d?dir
涉及参数说明:
-k?保留源文件
-d?解开压缩文件
-r?递归处理,将指定目录下的所有文件及子目录一并处理
-v?显示指令执行过程
上一个教程:Linux命令太多,怎么做成批处理
下一个教程:Linux ps命令详解:查看正在运行的进程