首页 > 代码库 > 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, G,c(byte)
+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 表示查找g且o都为4权限的文件(与关系)
测试如下,/app下创建文件test1、test2,并且更改他们权限进行如下测试
[处理动作](常用)
-ls 将查询文件信息长列出
-delete 删除查询的文件
-fls filename 将查询的文件长列出并且存入filename
-ok comman \; 对查询文件进行command操作,询问方式进行每一次command操作
-exec和-ok一样用法,但是不是以询问方式进行每一个文件的command操作
Ps:{}表示引用查询的文件
例如:在/app 下面创建文件test1-10,查找并且删除文件test1-9
总结一下,对于查找文件的方法中locate查找速度快,但是不能实时查询,功能也比较单一,find功能较全,能够实时查询,可以结合其他命令实现更多操作,但是查找速度方面较慢。
linux--文件查找