首页 > 代码库 > linux--文件查找

linux--文件查找

2017-08-11 19:12:55 @惟愿此心无怨尤

 

今天对linux中文件的常用查找的方法进行简单总结

简单地说就是 locate 和find 命令的使用

 

技术分享

 locate 查询文件介绍

语法 locate [选项] keyword

命令选项

-i 不区分大小写搜索

-n N列举前N个项目

-r 支持正则

 

该命令不是实时查询的,而是查询系统上面预先建好的文件索引库文件/var/lib/mlocate/mlocate.db

updatedb 命令更新locate数据库或者退出后重新进入

 

测试如下:

查询所有以.conf结尾的文件(由于结果太长,只截取部分),然后再/app目录下面创建文件test,查询/app/test,更新locate数据库后,再次查询。

技术分享

技术分享

 技术分享

技术分享

用法比较简单,查找速度快

 

 

find查找文件介绍

 

语法格式   find  [查找路径](默认为当前)[查找条件] [处理动作](默认为输出到终端)

 

特点 实时查询,速度较慢,但是功能更齐全

 

[查找条件](常用)

-maxdepth level 指定最大搜索深度

-minxdepth level  最小搜索深度

-name 基于名称的精确查找

-iname 基于名称忽略大小写的精确查找查找

-regex 支持正则 默认为(emacs标准)

-regextype egrep -regex 支持egrep同标准的正则

-user 用户名  基于文件owner的查找

-group 组名 基于文件group的查找

-perm 根据权限进行查找

-nouser 查找没有owner的文件

-nogroup 查找没有group的文件

-type 基于文件类型的查找

? f: 普通文件

? d: 目录文件

? l: 符号链接文件

? s:套接字文件

? b: 块设备文件

? c: 字符设备文件

? p: 管道文件

-size [+|-]#UNIT 根据文件大小来查找 eg -size 5M

常用单位:k, M, Gcbyte

+6M 表示查找范围为(6M,]

-6M 表示查找范围为 [0,5M]

6M  表示查找范围为 (5M,6M]

-atime-mtime-ctime(以天为单位)

-amin-mmin-cmin(以分钟为单位)

使用和-size差不多

例如

-atime -3 表示[0,3)

-atime +3 表示{4,)

-atime 3  表示[3,4)

 

支持 -a(默认)-o -not(或者!)进行复核条件的查询

 

下面对一些选项进行测试

在/app目录下查找最大深度为3的文件

 技术分享

 

查找当前目录下名字为a.1的文件;查找当前目录下类型为普通文件的文件

技术分享

 

利用 -regextype grep 指定为grep类型就可以使用

技术分享

 

 

对于-perm根据权限进行查找进行说明和测试如下

-perm 444 表示查询指定权限为444的文件

-perm /444 表示查找ugo中任意一位有4即可的文件(或关系)

-perm /044 表示查找go中任意一位有4即可的文件,0表示不考虑该位权限

-perm -044 表示查找go都为4权限的文件(与关系)

 

测试如下,/app下创建文件test1test2,并且更改他们权限进行如下测试

 技术分享

技术分享

 

 

[处理动作](常用)

-ls 将查询文件信息长列出

-delete 删除查询的文件

-fls filename 将查询的文件长列出并且存入filename

-ok comman \; 对查询文件进行command操作,询问方式进行每一次command操作

-exec-ok一样用法,但是不是以询问方式进行每一个文件的command操作

 

Ps{}表示引用查询的文件

 

例如:在/app 下面创建文件test1-10,查找并且删除文件test1-9

 技术分享技术分享

 

总结一下,对于查找文件的方法中locate查找速度快,但是不能实时查询,功能也比较单一,find功能较全,能够实时查询,可以结合其他命令实现更多操作,但是查找速度方面较慢。

 

linux--文件查找