Linux系统文件查找与解压缩方法
如同我们平时在操作 Windows系统时,文件查找与解压缩文件是经常要使用到的操作,Linux系统中也要经常用到相同的操作,今天我们就来介绍Linux系统中的一些文件查找与解压缩时使用到的工具。
一、文件查找
1.locate命令
优点:搜索速度快,节省系统性能(生产环境适合使用locate)
缺点:不能即时更新(文件索引数据库在每次开机后更新),要想搜索最新文件需手动输入命令updatedb更新文件索引数据库,模糊搜索;
Locate命令适合搜索不经常变化的文件,如系统文件
查询系统上预建的文件索引数据库:
/var/lib/mlocate/mlocate.db
locate
-i 忽略大小写
-b 只搜索基名符合条件的文件
-n 只列出前几个
-r 支持扩展正则表达式
2.find命令
优点:精确查找;实时查找;搜索条件灵活
缺点:查找速度慢;占用系统性能
find [OPTION]…[查找路径] [查找条件] [处理动作]
指定搜索层级:
不指定情况下默认当前目录下搜索
-maxdepth level 最大搜索深度,默认为1层
-mindepth level 最小搜索深度
根据文件名和inode查找:
-name “filename” 支持使用通配符glob;注意文件名一定加””
-iname “filename” 不区分字母大小写
-inum n 按节点号inode查找文件
-samefile name 查找相同inode的文件,即硬链接
-links n 查找链接数为n的文件
-regex “PATTERN” 使用正则表达式搜索
根据属主、属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME:查找属组为指定组(GID)的文件
-uid UID: 查找属主为指定UID号的文件
-gid GID: 查找属组为指定GID号的文件
-nouser: 查找没有属主的文件
-nogroup: 查找没有属组的文件
-nouser -o -nogroup 查找没有属主或没有属组的文件
根据文件类型查找:
-type TYPE:
f: 普通文件
d: 目录文件
l: 符号链接文件
s: 套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
搜索空文件或目录:
-empty 查找空文件或空目录
例:find/app -type d -empty
组合条件:
-a 与
-o 或
-not,! 非
德摩根定律:
(非A)或(非B)=非(A且B)
(非A)且(非B)=非(A或B)
注意:使用()表示组合条件时,括号内两边一定要加空格,且括号一定要加转义符”\”。
根据文件大小来查找:
-size[+|-]#UNIT
常用单位:k,M,G,c(byte)
1024c (1024-1,1024]
+1024c (1024,+)
-1024c [0,1024-1]
根据时间戳查找:
以“天”为单位:
-atime[+|-]#
3:[3,4)
+3:[4,+]
-4:[0,4)
1 | -mtime |
1 | -ctime |
以“分钟”为单位:
1 | -atime |
1 | -mtime |
1 | -ctime |
根据权限查找:
1 | -perm[/|+|-]MODE |
MODE:精确权限匹配(数字法)
/|+MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系;
CentOS6使用“+”,CentOS7使用“/”
-MODE:没类对象权限都有对应权限时,才会匹配,且关系;
处理动作:
-print 默认的处理动作,显示到屏幕
-ls 类似于对查找的文件执行”ls -l”命令
-delete 删除查找到的文件,不进行提示
-fls file 查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND{}\; {}代表前面搜索到的结果,-ok后必须跟\;结尾,语法要求;对查找到的每个文件执行COMMAND命令,每个文件执行命令时,会要求用户确认
1 | find -name “f*” -ok rm {} \; |
将f开头的文件删除,每个文件删除时会要求确认。
-exec COMMAND{}\;
对每个搜索到的文件执行COMMAND命令,不要求用户确认
1 | find -name “f*” -exec mv {} /data/ \; |
将f开头的文件移动到data目录下,不要求用户确认
二、压缩和解压缩
Linux系统中支持多种文件解压缩工具,不同压缩工具压缩比有所不同,压缩后的后缀名也不一样。要注意的是:前面我们说过在linux系统中,文件是不通过后缀判断的,但在解压缩中是个例外,不同的解压缩工具对后缀是有要求的。
1.Linux常见解压缩工具:
file-roller 图形化解压缩工具(类似于windows系统winrar)
compress/uncompress: .Z后缀
gzip/gunzip: .gz后缀(主流)
bzip2/bunzip2: .bz2后缀(主流)
xz/unxz: .xz后缀(主流,新兴)
zip
tar
cpio
compress/uncompress
-d 解压缩,相当于uncompress,压缩文件删除
-c 压缩结果输出至标准输出,不删除原文件
例:compress -c b > b.Z
解压文件b并且不删除
-v 显示详情
uncompress 解压缩,同compress -d,压缩文件删除
zcat file.Z > file
解压缩,原压缩文件不删除
gzip/gunzip
-d 解压缩,相当于gunzip
-c 将压缩结果输出至标准输出,不删除原文件
-v 显示详情
zcat file.gz > file
解压缩,原压缩文件不删除
bzip2/bunzip
-k 保留原文件
-d 解压缩
bunzip2 解压缩
bzcat 不解压缩前提查看文本内容,与gzip的zcat用法类似
xz/unxz
-k 保留原文件
-d 解压缩
unxz 解压缩,功能同xz -d
xzcat 功能同zcat,bzcat
压缩比:xz > bzip2 > gzip > compress
zip/unzip
打包压缩
1 | zip -r /tsetdir/sysconfig /etc/sysconfig/ |
解包解压缩
1 | unzip sysconfig.zip |
cat /var/log/messages|zip messages
unzip -p message > message
解压缩重定向
tar工具:(Tape ARchive,磁带归档的缩写)打包工具,并不压缩
tar[OPTION]…
-c 创建一个打包文件
-C 指定解压的目录
-p 保留属性
-v 查看过程
-f 对哪个进行文件归档或打包
-t 查看列表
1.创建文档(打包文件或目录)
1 | tar -cpvf /PATH/TO/SOMEFILE.tar FILE |
2.追加文件到归档:注:不支持对压缩文件追加
1 | tar -r -f /PATH/TO/SOMEFILE.tar FILE… |
3.查看归档文件中的文件列表
1 | tar -t -f /PATH/TO/SOMEFILE.tar |
4.展开归档(解包)
1 | tar -x -f /PATH/TO/SOMEFILE.tar |
1 | tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/ |
5.结合压缩工具实现:归档并压缩
-j:bizp2
-z:gzip
-J:xz
6.-T选项指定输入文件,-X选项指定包含要排除的文件列表
1 | tar zcvf myback.tgz -T /root/includefilelist -X /root/excludefilelist |
7.分割打的tar文件为多份小文件:
split
-b Size -d tar-file-name prefix-name
-b 1M –d mybackup.tgz mybackup-parts
-b 1M mybackup.tgz mybackup-parts
8.合并tar分割的多个小文件:
1 | cat mybackup-parts* > mybackup.tar.gz |
cpio
功能:复制文件从或到归档
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,他可以解压以
“cpio”或者”tar”结尾的文件
cpio[option] > 文件名或者设备名
cpio[option] < 文件名或者设备名
选项
-o 将文件拷贝打包成文件或者将文件输出到设备上
-i 解包,将打包文件解压或将设备上的备份还原到系统
-t 预览,查看文件内容或者输出到设备上的文件内容
-v 显示打包过程中的文件名称
-d 解包生产目录,在cpio还原时,自动的建立目录
-c 一种较新的存储方式
示例:
将etc目录备份
1 | find ./etc -print |cpio -ov >etc.cpio |
内容预览
1 | cpio -tv < etc.cpio |
解包文件
1 | cpio -idv <etc.cpio |
关于linux系统的文件查找和解压缩方法今天就先介绍到这里了。