linux中locate,find命令都是在文件系统中查找符合条件的文件,但是locate是利用数据库来搜寻数据,所以速度相对比较快。 locate依赖于事先构建好的索引库,每天系统在空闲时间都会通过周期性任务自动完成索引库的更新,手动更新索引库就需要执行命令updatedb,也正是因为依赖于数据库,造成locate查询出来的结果可能会跟执行查询命令时的实际情况有出入,并且其为模糊查找。 locate命令格式: locate [OPTION]... [PATTERN]... 常用选项: -b,--basename:只匹配路径中的基名; -c,--count:统计出共有多少个符合条件的文件; -r, --regexp REGEXP:查询时用基本的正则表达式; -i, --ignore-case:忽略大小写查询;
注意:索引构建过程需要遍历整个根文件系统,及其消耗资源。
find是实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找,其查找速度比较慢,但为精确查找。 find用法: 格式:find [OPTIONS] [查找起始路径] [查找条件] [处理动作] find [PATH] [option] [action] 查找起始路径:指定具体搜索目标起始路径,默认为当前目录; 查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等标准进行,默认为找出指定路径下的所有文件; 处理动作:对符合条件的文件做出操作,如删除,重命名等
以下对查找条件做出略微详细的说明: 根据文件名查找: -name pattern -iname pattern:同-name,但是不区分大小写; 此处的pattern支持glob风格的通配符,如*,?,[],[^]等; -regex pattern:基于正则表达式查找,匹配到的是整个路径,而非文件名;
根据文件从属关系查找: -user uname:查找属主为指定用户的文件; -group gname:查找属组为指定组的文件; -uid n:查找属主为指定UID的文件; -gid n:查找属组为指定GID的文件; -nouser:查找没有属主的文件; -nogroup:查找没有属组的文件;
|
|
来自: Frank__Library > 《linux》