一、非实时搜索locate
(一)locate特性
- 1、依赖于事先构建的索引,在文件系统上查找符合条件的文件;
- 2、索引数据库位置 /var/lib/mlocate/mlocate.db ;
- 3、默认是系统每次开机后自动开始执行更新索引数据库任务;
- 4、手动更新索引数据库:
- updatedb
- 5、搜索速度超快,但不适合搜索那些经常变化的文件,即非实时搜索;
- 6、搜索的是文件的绝对路径;
- 7、默认是模糊搜索。
(二)用法格式
locate [OPTION] KEYWORD
(三)有用的OPTION选项
- -i :不区分大小写
- -r :使用正则表达式
- -n N :只列举前N个匹配的项目
(四)⚠️注意事项⚠️
- 1、默认是模糊搜索:搜索文件名称或者绝对路径中包含KEYWORD的文件;
- 2、加 -r 选项:精确匹配正则表达式PATTERN的搜索条件。
二、实时搜索find
(一)find特性
- 1、通过指定路径完成文件查找;
- 2、搜索速度很慢,适合查找非系统文件,即实时查找;
- 3、可能只搜索用户具备读取和执行权限的目录;
- 4、默认是精确匹配。
(二)用法格式
find [PATH] [OPTION] [EXPRESSION]
- PATH:指定具体的目标路径,(省略不写)默认是当前目录;
- EXPRESSION:指定查找条件,支持通过精确匹配文件名、大小、类型、权限的条件,也支持模糊匹配,(省略不写)默认是找出指定路径下的所有文件。
⚠️通过find查找的”所有文件”包括隐藏文件!⚠️
三、简单查找条件
(一)搜索层级
(1)指定最大搜索深度为第LEVEL层,搜索范围是第1层到第LEVEL层
find PATH -maxdepth LEVEL
(2)指定最小搜索深度为第LEVEL层,搜索范围是第LEVEL层到更深层次
find PATH -mindepth LEVEL
(3)只在第LEVEL层进行搜索
find PATH -maxdepth LEVEL -mindepth LEVEL
(二)文件名
(1)通过通配符GLOB模糊匹配文件名,区分大小写
find PATH -name "GLOB"
(2)通过通配符GLOB模糊匹配文件名,不区分大小写
find PATH -iname "GLOB"
(3)通过正则表达式PATTERN精确匹配文件名,区分大小写
find PATH -regex "PATTERN"
(三)节点号inode
(1)查找节点号为INODE的所有文件
find PATH -inum INODE
(2)查找与FILENAME的节点号inode一样的所有文件
find PATH -samefile FILENAME
(3)查找链接数为N的所有文件
find PATH -links N
(四)属主
(1)查找属主为USERNAME的所有文件
find PATH -user USERNAME
(2)查找属主为指定UID的所有文件
find PATH -uid UID
(3)查找没有属主的所有文件
find PATH -nouser
(五)属组
(1)查找属组为GROUPNAME的文件
find PATH -group<