1 文件查找
1.1 locate
locate查询系统上构建的文件索引数据库/var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb命令可以更新数据库 索引构建过程中需要遍历整个根文件系统,很消耗资源
工作特点:
- 查找速度快
- 模糊查找
- 非实时查找
命令说明:
locate
命令格式:
locate 查找条件
常用选项:
-i #不区分大小写的搜索
-r #使用基本正则表达式
-n #只列出前n个匹配的文件
范例:
1.2 find
find是实时查找工具,通过遍历指定路径完成文件查找
工作特点:
- 查找速度相对于locate较慢
- 精确查找
- 实时查找
命令说明:
find
命令格式:
find [选项] 查找路径 查找条件 [动作]
1.2.1 指定查找路径深度
-maxdepth #指定查找路径的最大深度
-mindepth #指定查找路径的最小深度
范例:查找/etc/目录下的二级目录下的所有文件
find /etc -maxpath 2 -minpath 2
1.2.2 先处理目录的文件再处理目录本身
-depth
范例:
1.2.3 根据文件名或inode查找
-name #按文件名查找,支持使用正则匹配(最常用)
-iname #按文件名查找,不区分大小写,支持使用正则匹配
-inum #按inode号查找
-samefile #相同inode号的文件
-links #链接数为n的文件
-regex #以正则匹配文件路径,而非文件名
范例:查找 /etc/ 目录中后缀为.conf的文件
find /etc -name '*\.conf'
1.2.4 根据属主或属组查找
-user #查找属主为指定用户的文件
-group #查找属组为指定用户组的文件
-uid #查找属主为指定的UID号的文件
-gid #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件
范例:
1.2.5 根据文件类型查找
-type TYPE
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
范例:查找 /dev/ 目录中的块设备文件
1.2.6 空目录或文件
-empty
范例:查找 /etc 目录下的空文件或目录文件
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 #指定参数的占位符
范例:
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 #指定要解压缩的路径
范例:
3 打包和解包
3.1 tar
命令说明:
tar
常用选项:
-f #指定压缩文件
-c #打包
-z #调用gzip压缩工具
-x #解压缩
-v #显示过程
-t #查看压缩包里的文件列表(不会解压缩文件)
-C #解压到指定路径中
tar压缩与解压缩使用实例:
#打包并压缩
tar -cvf
#解压缩
tar -zxvf
#查看压缩包里的文件列表
tar -tf
范例:
3.2 split
命令说明:
命令一:split
功能说明:将大文件切割成多个小文件
常用选项:
-b #指定每个被切割后的小文件的大小
-d #指定用数字做后缀
命令二:md5sum
功能说明:查看文件的MD5值,可以校验拷贝的文件与源文件是否相同
范例:使用split切割文件并和并文件,然后通过MD5校验文件是否正常
#环境准备:生成1G的大文件
dd if=/dev/urandom of=test.img bs=1024M count=1
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