文件查找和打包压缩

本文介绍了Linux中的locate, find, xargs等文件查找工具,以及compress, gzip, bzip2, xz和zip等压缩工具的使用方法和示例。还涵盖了tar, split, cpio等打包工具的应用。

1、文件查找工具

1)locate命令
locate
1.作用:对文件索引数据库中的内容进行搜索
2.新建系统,/var/lib/mlocate/下没有mlocate.db文件:
	1)等一段时间,系统会自动生成此文件
	2)updatedb命令创建文件索引数据库文件
3.updatedb对应的配置文件/etc/updatedb.conf,定义了创建mlocate.db目录索引的工作范围
4.参数:
-i		不区分大小写搜索
-r		使用基本的正则表达式
--regex	使用扩展正则表达式
-b		只匹配基名,默认匹配全路径
-c		显示匹配文件的数量
-l		限制输出的条目
5.适用范围:适合搜索相对静态不常变化的文件
[root@szb ~]# locate -c sysconfig
147

[root@szb ~]# locate -l 3 -r "\.conf$"
/apps/nginx/conf/fastcgi.conf
/apps/nginx/conf/nginx.conf
/etc/GeoIP.conf
2)find命令
find
1.作用:在指定路径直接实时递归查找文件,效率不高
2.语法格式:find 查找选项 [查找路径范围] [表达式]
	表达式:默认输出查找的内容到控制台,可以是查找条件选项或者处理动作等
3.查找条件选项:
	-maxdepth	最大搜索遍历深度
	-mindepth	最小搜索遍历深度
	-name		指定文件名,支持通配符
	-iname 		忽略文件名称大小写
	-type		根据文件类型查找(f/d/l/s/b/c/p)
	-size		根据文件大小进行匹配

	-inum		根据inode编号查找,ls -i查看
	-empty		查找空目录或空文件
	-samefile	可以找到和文件相同inode的文件
	-links		查找链接数
	-regex		正则匹配
	
	-user		根据文件数组
	-uid		根据UID进行匹配
	-group/-gid		根据属组的名或id进行匹配
	-nouser		文件属主不存在的
	-nogroup	文件属组不存在的
	-perm		根据文件权限,666,必须都是;/666只要有一个权限是;-666都必须包含

	以天为单位:
	-atime		根据访问时间查找
	-mtime		根据修改时间查找
	-ctime		根据创建时间查找
	以分钟为单位:
	-amin/-mmin/-cmin
4.动作:
	-ls			功能类似于ls -l
	-print0		查找的文件全路径输出,并用空字符null代替换行符进行分界
	-delete		删除查找出来的文件
	-ok			配合{} \;一起使用,{}表示查找到的文件,;代表ok语法结束符号,需要交互
	-exec		等价于-ok,但是不需要交互确认
5.多条件的逻辑组合
	-a		
	-o		
	-not/! 	
注意:复杂场景需要()将优先级括起来
示例1:
[root@szb test]# find -inum 1053064
./diff.log

示例2:
[root@szb test]# find -name file -ls   # -ls动作
1053045    4 -rw-rw-r--   1 root     root           13 Jun 21 14:36 ./file
[root@szb test]# find /root/test/ -type f -print0
/root/test/file2/root/test/file3/root/test/file4.bak/

示例3:
[root@szb test]# find -name file -fls info  # -fls选项将ls显示内容保存到文件中
[root@szb test]# cat info
1053045    4 -rw-rw-r--   1 root     root           13 Jun 21 14:36 ./file

示例4:
[root@szb test]# find /etc/ -regex ".*.conf"

示例5:
[root@szb test]# find -name file --delete

示例6:
[root@szb test]# find -perm 644 -exec rm -rf {} \;
3)xargs命令
xargs
1.作用:有些命令不接受标准输入,如ls;此命令接收标准输入,将其传递到正确的位置上
2.参数:
-n		将每#个空格替换成行,从而将一行转换成多行
-d		输入指定一个定制的定界符
-0		将null字符代替空格作为分界符,作用等同于find的-print0
示例1:
[root@szb test]# xargs
hellp
world
hellp world       # ctrl + d 会显示此行结果

示例2:
[root@szb test]# seq 4| xargs
1 2 3 4

示例3:
[root@szb test]# echo {1..10} | xargs -n3
1 2 3
4 5 6
7 8 9
10

示例4:
[root@szb test]# echo -n "123s1232s1213s123" | xargs -d s -n2
123 1232
1213 123

示例5:
[root@szb test]# find /data -type f -ls   			# 按字母次序排序
[root@szb test]# find /data -type f | xargs ls -lS  # 从大到小文件排序

2、文件压缩工具

1)compress命令
compress/uncompress
1.作用:压缩和解压缩
2.软件包:ncompress
3.压缩后文件后缀:.Z
4.参数:
-c		不会删除原文件,会将压缩的内容输出至控制台
-d		解压缩或uncompress
示例:
[root@szb test]# compress -c file > file.Z
2)gzip命令
gzip/gunzip
1.作用:压缩和解压缩,压缩率比compress高
2.软件包:gzip
3.压缩后文件后缀:.gz
4.压缩率:1-9,默认6,指定压缩级别:gzip -9
5.参数:
-c		不会删除原文件,会将压缩的内容输出至控制台
-d		解压缩或gunzip
6.如果需要保留压缩包,可以用gzip包的zcat命令:
eg:zcat file.gz > file
示例:
[root@szb test]# dmesg | gzip > dmesg.log.gz   # 配合管道符,将输入信息进行压缩
3)bzip2命令
bzip2/bunzip2
1.作用:压缩和解压缩,压缩率比gzip还有好点
2.软件包:bzip2
3.压缩后文件后缀:.bz2
4.压缩率:1-9,默认9
5.参数:
-k		保留源文件
-d		解压缩或bunzip2
4)xz命令
xz/unxz
1.作用:压缩和解压缩,压缩率更高
2.软件包:xz
3.压缩后文件后缀:.xz
4.压缩率:1-9,默认9
5.参数:
-k		保留源文件
-d		解压缩或unxz
5)zip命令
zip/unzip
1.作用:压缩和解压缩,压缩率更高
2.软件包:zip,unzip
3.压缩后文件后缀:.zip
4.格式:zip file.zip file
5.参数:
-k		保留源文件
-d		解压缩或unzip
-r		压缩某个目录下的所有文件
[root@szb test]# cat file | zip file.zip -   # 使用管道进行压缩
[root@szb test]# unzip -p file.zip > file	 # 使用-p配合重定向进行解压

3、打包工具

1) tar命令
tar
1.作用:磁带归档,用于将多个打包存放在磁带或磁盘归档文件中
2.参数:
常用选项:压缩:-zcvf;解压缩:-xvf
-c:创建存档文件
-t:列出存档文件内容
-x:将存档文件解包
-z:指定gzip压缩格式
-v:显示详细信息
-f:指定存档文件
-j:指定bzip2压缩格式
-J:指定xz压缩格式    # xz的压缩率相对高一点
-p:保留权限
-r:追加文件
-C:指定目录

-T:指定处理的文件
-X:排除指定文件的内容
3.格式:tar -zcvf file.tar file
4.后缀名:.tar.gz或者.tar.bz2或者.tar.xz
[root@szb test]# rpm -q tar  # tar包已安装
tar-1.26-35.el7.x86_64

[root@szb test]# tar -zcvf file.tar.gz file  # 压缩
[root@szb test]# tar -xvf file.tar.gz		 # 解压


[root@szb test]# tar -xvf file.tar.gz -C szb/  # 指定具体目录
[root@szb test]# tar -t -f file.tar.gz		  # 查看tar包内容

[root@szb test]# tar -cvfp file.tar -T file1 -X file2  # file1存放打包的路径,file2存放不想打包的文件路径
2)splite命令
splite
1.作用:文件切割
2.参数:
-b		指定切割的单位大小
-d		切割后的后缀名通过数值进行区分00-99,默认字母:aa到zz
3.分割后的文件通过cat和重定向>合并一起
[root@szb szb]# split -b 40k -d access_log file
[root@szb szb]# ll
total 184
-rw-r--r-- 1 root root 92669 May 10 21:15 access_log
-rw-r--r-- 1 root root 40960 Jun 22 00:34 file00
-rw-r--r-- 1 root root 40960 Jun 22 00:34 file01
-rw-r--r-- 1 root root 10749 Jun 22 00:34 file02
[root@szb szb]# cat file* > access.log    # 合并
3)cpio命令
cpio
1.作用:非常古老的归档工具,包管理命令,复制文件到归档包
2.三种运行模式:
	copy-out:-o,归档或打包模式
	copy-in:-i,提取或解包模式
	copy-pass:-p,透传或目录拷贝模式
3.参数:
-t		列出标准输入的归档文件中文件列表
-O		输出到指定的归档文件名
-d 		自动生成目录
[root@szb szb]# rpm -q cpio
cpio-2.11-28.el7.x86_64

[root@szb szb]# ls | cpio -ov > file.cpio  # 将多个文件打包成一个文件
[root@szb szb]# cpio -tv < file.cpio       # 查看包内容
[root@szb szb]# cpio -idv < file.cpio      # 解包文件

4、案例

示例1:
查找file文件命令
[root@szb szb]# find -name file

示例2:
删除/data/files目录下1周前修改过的且大于10MB的文件
[root@szb szb]# find /data/files -type f -mtime +7 -size +10M -exec rm {} \;

示例3:
查找/data目录下用户szb的以a开头的文件
[root@szb szb]# find /data/ -type f -a -user szb -a -name "a*"

示例4:
查找file文件命令
[root@szb szb]# find -name file

示例5:
查找file文件命令
[root@szb szb]# find -name file
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值