#文件查找和压缩
##一、在文件系统上查找符合条件的文件
###locate命令
查询系统上预建的文件索引数据库。
索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库(updatedb),索引数据库路径/var/lib/mlovate/mlocate.db二进制文件,不要cat查看。工作特点:
- 查找速度快,因为寻找的数据是由已建立的数据库/var/lib/molvate/提供,不用去硬盘当
中存取数据
- 模糊查找
- 非实时查找
- 搜索文件的全路径,不仅仅是文件名
- 可能只搜索用户具备读取和执行权限的目录
格式: locate KEYWORD
选项:
-i 不区分大小写的搜索
-n N 只列举前n个匹配项目
-r 使用正则表达式
例:搜索名称或路径中带有conf的文件
locate –r `\.conf$`
###find命令
- 工作特点:
- 查找速度略慢
- 精确查找
- 实时查找
- 可能只搜索用户具备读取和执行权限的目录
- 格式: find [option]…[查找路径][查找条件][处理动作]
查找路径:指定具体路径;默认为当前路径
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找
出指定路径下的所有文件
按搜索层数查找:
-maxdepth level 最大搜索目录深度,指定目录为第1级
-mindepth level 最小搜索目录深度
例:搜索/data/目录的第二层目录。需要最大深度和最小深度一起用
[root@V9centos7 /data]#find /data -maxdepth 2 -mindepth 2
/data/txt1/txt2
根据文件名和iNode查找:
-name “file”: 精确匹配,可以使用通配符
-iname “file”: 忽略大小写
-inum n: 按inode号查找
-samefile “file”: 查找相同的文件(indoe相同)
-links n: 链接数为n的文件
-regex“PATTERN”: 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
例1:查看.sh的文件
[root@V9centos7 ~]#find -name "*.sh"
./bin/newhello.sh
./bin/useradd.sh
./bin/systeminformation.sh
./bin/useradd2.sh
./bin/vreatescript.sh
./taxt.sh
例2:查看链接数为5的文件
[root@V9centos7 ~]#find -links 5
./.cache/gnome-software/3.22
例3:利用正则表达式查.sh后缀的文件
[root@V9centos7 ~]#find -regex ".*\.sh$"
./bin/newhello.sh
./bin/useradd.sh
./bin/systeminformation.sh
./bin/useradd2.sh
./bin/vreatescript.sh
./taxt.sh
根据属主、属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME:查找属组为指定用户(GID)的文件
-uid UserID: 查找属主为指定的UID号的文件
-gid GroupID: 查找属组为指定的GID号的文件
-nouser: 查找没有属主的文件
-nogroup: 查找没有属组的文件
例1:查找文件所有者和所属组都是v9的文件
find -user v9 -group v9
例2: