在Linux系统中,我们通常使用的文件压缩命令有:bunzip2,bzip2,cpio,gunzip,gzip,split(切割文件),zgrep(在压缩文件中寻找匹配的正则表达式),zip,unzip,tar,rar。
最后四个是我比较常用的,今天的笔记就写这四个的好了。
1、tar:
tar命令:tar [选项…] [FILE]…
输入“tar -?”获取相关帮助信息,tar的帮助文档给出示例如下:
示例
tar -cf archive.tar foo bar # 从文件 foo 和 bar 创建归档文件archive.tar。
tar -tvf archive.tar # 详细列举归档文件 archive.tar中的所有文件。
tar -xf archive.tar # 展开归档文件 archive.tar中的所有文件。
如果是要压缩文件夹的话,输入:
tar -cvf dirArchive.tar /dirName
tar -xvf dirArchive.tar /dirName
下面复习一下。我们先人为做个文件夹出来,里面放置若干文件夹和文件:
我们首先创建一个tar文件,先压缩一个文件夹(testdir):
tar -cf testdir.tar testdir
然后列出该压缩包里的结构:
接着我们向这个压缩包追加文件:
然后再看看这个压缩包里的结构:
如果使用示例中的-v选项,则会将压缩包里的文件属性全部列出。包括权限,创建人,字节大小,修改时间和文件名:
一般来说比较常用到的选项有主操作选项:
另外再练习一下其他的一些用法:
1、当压缩testdir目录的时候,需要将文件夹根路径内的test文件排除:
2、只压缩比指定时间更新的文件:
3、压缩所有文件名前缀为“te”的文件或文件夹(或者压缩后缀为“st”的文件):
最后补充一下常用的选项:
-p,–preserve-permissions,–same-permissions
–preserve 与 -p 和 -s 一样
–same-owner 尝试解压时保持所有者关系一致(超级用户默认此项)
-r,–append 追加文件至归档结尾
-u,–update 仅追加比归档中副本更新的文件
-k,–keep-old-files 解压时不要替换存在的文件
–keep-newer-files
不要替换比归档中副本更新的已存在的文件
–no-overwrite-dir 保留已存在目录的元数据
–overwrite 解压时重写存在的文件
–overwrite-dir
解压时重写已存在目录的元数据(默认)
–recursive-unlink 解压目录之前先清除目录层次
-N,–newer=DATE-OR-FILE,–after-date=DATE-OR-FILE 只保存比 DATE-OR-FILE 更新的文件
2、rar:rar <command> -<switch 1> -<switch N> <archive> <files…><@listfiles…> <path_to_extract>Linux系统的默认软件包里是不包含rar压缩工具的,所以我们先安装rar:sudo apt-get install rar<command>选项只可以从给出的选项中输入一个(且只能一个),我们看一下它提供的命令列表:使用举例,比如说现在我们要进行文件压缩:在完成压缩之后,我们可以通过命令l获取压缩文件内具体的结构信息:甚至可以通过命令p将压缩文件内的所有信息输出到控制台:<switch N>部分则提供了一些功能性的选项。比如说以追加性的方式更新压缩文件可选用-ad:或者说想把某个文件排除在外可以选用开关-x(注意,要排除的串要紧跟在x后面,不用加任何符号),比如我们这里想要将文件夹根路径下凡是“te”开头的文件都排除:还有加密,用开关-p,同样的,密码紧随p后面即可:如果相对文件进行解压或者直接打开文件,就会要求你输入密码:除此之外,还有一些常用的选项有:ag[format] Generate archive name using the current datecl Convert names to lower casecu Convert names to upper casedf Delete files after archivinged Do not add empty directoriesdw Wipe files after archiving其他的命令和开关可参照帮助手册。3、zip , unzip:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
zip和unzip的使用方法是比较简单的,甚至连帮助文档都写得很简单,所以也就没什么笔记好写的了,直接看帮助文档即可。
linux zip 命令详解
语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件…][-i <范本样式>][-x <范本样式>]
补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
参 数:
-b<工作目录> 指定暂时存放文件的目录。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-<压缩效率> 压缩效率是一个介于1-9的数值。
linux unzip 命令详解
语 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
补充说明:unzip为.zip压缩文件的解压缩程序。
参 数:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。
-d<目录> 指定文件解压缩后所要存储的目录。
-Z unzip -Z等于执行zipinfo指令
范例:
zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。
1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:
# zip -r yasuo.zip abc.txt dir1
# unzip yasuo.zip
3.我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们:
# unzip abc?.zip
注释:?表示一个字符,如果用*表示任意多个字符。
4.我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么:
# unzip -v large.zip
5.我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了
# unzip -t large.zip
6.我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:
# unzip -j music.zip