1 文件查找

1.1 locate

locate查询系统上构建的文件索引数据库/var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb命令可以更新数据库 索引构建过程中需要遍历整个根文件系统,很消耗资源

工作特点:

  • 查找速度快
  • 模糊查找
  • 非实时查找

命令说明:

locate
命令格式:
    locate 查找条件
常用选项:
    -i  #不区分大小写的搜索
    -r  #使用基本正则表达式
    -n  #只列出前n个匹配的文件

范例:

06 文件查找和打包压缩_tar

1.2 find

find是实时查找工具,通过遍历指定路径完成文件查找

工作特点:

  • 查找速度相对于locate较慢
  • 精确查找
  • 实时查找

命令说明:

find
命令格式:
    find [选项] 查找路径 查找条件 [动作]

1.2.1 指定查找路径深度

-maxdepth   #指定查找路径的最大深度
-mindepth   #指定查找路径的最小深度

范例:查找/etc/目录下的二级目录下的所有文件

find /etc -maxpath 2 -minpath 2

1.2.2 先处理目录的文件再处理目录本身

-depth

范例:

06 文件查找和打包压缩_find文件查找_02

1.2.3 根据文件名或inode查找

-name        #按文件名查找,支持使用正则匹配(最常用)
-iname       #按文件名查找,不区分大小写,支持使用正则匹配
-inum        #按inode号查找
-samefile    #相同inode号的文件
-links       #链接数为n的文件
-regex       #以正则匹配文件路径,而非文件名

范例:查找 /etc/ 目录中后缀为.conf的文件

find /etc -name '*\.conf'

06 文件查找和打包压缩_zip压缩和解压缩_03

1.2.4 根据属主或属组查找

-user       #查找属主为指定用户的文件
-group      #查找属组为指定用户组的文件
-uid        #查找属主为指定的UID号的文件
-gid        #查找属组为指定的GID号的文件
-nouser     #查找没有属主的文件
-nogroup    #查找没有属组的文件

范例:

06 文件查找和打包压缩_find文件查找_04

1.2.5 根据文件类型查找

-type TYPE
TYPE可以是以下形式:
    f: 普通文件
    d: 目录文件
    l: 符号链接文件
    s:套接字文件
    b: 块设备文件
    c: 字符设备文件
    p: 管道文件

范例:查找 /dev/ 目录中的块设备文件

06 文件查找和打包压缩_zip压缩和解压缩_05

1.2.6 空目录或文件

-empty

范例:查找 /etc 目录下的空文件或目录文件

06 文件查找和打包压缩_zip压缩和解压缩_06

1.2.7 组合条件

-a		#默认多个条件是与关系
-o		#或关系
-not	#取反

范例:

#统计 /etc/ 目录下文件和目录的个数
find /etc/ -type d -o -type l |wc -l

1.2.8 排除目录

-path	#指定字符串作为寻找目录的范本样式
-prune	#不寻找字符串作为寻找文件或目录的范本样式

范例:

#查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf"

#查找/etc/下,除/etc/sane.d和/etc/fonts这两个目录的所有.conf后缀的文件
find /etc \( -path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf"

1.2.9 根据文件大小查找

-size
	6k	#表示(5k,6k]
	-6k	#表示[0,5k]
	+6k	#表示(6k,∞)

范例:找到系统中所有超过10G的文件

find / -size +10G

1.2.10 根据时间戳

#以天为单位
-atime
-mtime
-ctime
#以分钟为单位
-amin
-mmin
-cmin

1.2.11 根据权限查找

-prem

权限匹配方法:
-prem 755	#匹配权限刚好是755的文件
-prem /111	#匹配只要任何人都有执行权限的文件
-prem -111	#匹配只有每个人都有执行权限的文件
-prem -002	#匹配只有其他用户有写权限的文件

1.2.12 处理动作

-print					#默认的处理动作,显示至屏幕
-ls						#类似于对查找到的文件执行“ls -l”命令
-delete					#删除查找到的文件,慎用!
-exec COMMAND {} \; 	#对查找到的每个文件执行由COMMAND指定的命令
{}						#用于引用查找到的文件名称自身

范例:

#备份配置文件,添加.orig这个扩展名
find -name ".conf" -exec cp {} {}.orig \;

#提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \;

#在主目录中寻找可被其它用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \;

#查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data –type f -perm 644 -name "*.sh" –exec chmod 755 {} \;

1.3 xargs

由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数,然后传递给后面的命令使用。

命令说明:

xargs
常用选项:
	-n	#指定每次传递参数的个数,默认为1
	-I	#指定参数的占位符

范例:

06 文件查找和打包压缩_split文件切割_07

2 压缩和解压缩

2.1 gzip和gunzip

命令说明:压缩文件带 .gz 后缀

命令一:gzip
功能说明:压缩文件或目录
常用选项:
	-d	#相当于gunzip
	-k	#压缩时保留原文件
	-#	#指定压缩比,取值为1-9,默认为5,值越大压缩比越大
	
命令二:gunzip
功能说明:解压缩

命令三:zcat
功能说明:查看.gz格式的压缩文件里的文件列表,不会将其解压缩

2.2 zip和unzip

命令说明:压缩文件带 .zip 后缀

命令一:zip
功能说明:压缩文件或目录
常用选项:
	-r	#递归,压缩目录即目录中的所有文件(常用选项)

命令二:unzip
功能说明:解压缩
常用选项:
	-d	#指定要解压缩的路径

范例:

06 文件查找和打包压缩_find文件查找_08

3 打包和解包

3.1 tar

命令说明:

tar
常用选项:
	-f	#指定压缩文件
	-c	#打包
	-z	#调用gzip压缩工具
	-x	#解压缩
	-v	#显示过程
	-t	#查看压缩包里的文件列表(不会解压缩文件)
	-C	#解压到指定路径中

tar压缩与解压缩使用实例:

#打包并压缩
tar -cvf

#解压缩
tar -zxvf

#查看压缩包里的文件列表
tar -tf

范例:

06 文件查找和打包压缩_split文件切割_09

3.2 split

命令说明:

命令一:split
功能说明:将大文件切割成多个小文件
常用选项:
    -b  #指定每个被切割后的小文件的大小
    -d  #指定用数字做后缀
    
命令二:md5sum
功能说明:查看文件的MD5值,可以校验拷贝的文件与源文件是否相同

范例:使用split切割文件并和并文件,然后通过MD5校验文件是否正常

#环境准备:生成1G的大文件
dd if=/dev/urandom of=test.img bs=1024M count=1

06 文件查找和打包压缩_find文件查找_10

3.3 cpio

命令说明:cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具

cpio
常见选项:
    -o  #打包
    -v  #显示过程
    -A  #向已存在的归档文件中追加文件
    -F  #使用指定的文件名替代标准输入或输出

范例:

#将etc目录备份
find /etc -print | cpio -ov > bak.cpio

#将/data内容追加bak.cpio
find /data | cpio -oA -F bak.cpio

#内容预览
cpio –tv < etc.cpio

#解包文件
cpio –idv < etc.cpio