首页 > 代码库 > linux学习之路之文本的查找---find命令的使用
linux学习之路之文本的查找---find命令的使用
文本的查找可以使用两种方式来实现,即使用locate命令来查找和find命令来查找
那么这两种方式有什么区别呢?
locate:是一种非实时查找,所谓非实时查找就是查找的不够实际,不够精确。因为locate查找是在
系统文件数据库中进行的,而数据库默认是一天更新一次,也就是说你查找的文件再数据库
更新之前查找的话,有可能找不到文件,因为那时数据库还没有去读取硬盘上的文件,所以
有些文件没有写入到数据库中。
可以收到更新数据库,使用命令updatedb
因为不上在硬盘上读取,因此速度快
locate是一种模糊匹配方式
由于locate使用的并不是很多,因此只是简略的介绍了一下。
另一种文件的查找方式,使用find命令来查找(递归查找方式)
find命令:是一种实时查找,他可以精确的匹配某个文件,支持众多匹配标准,它是通过遍历整个目录
下的文件来进行查找的,因此速度慢
语法格式:find 查找的路径 匹配标准 查找到以后的处理动作
查找路径:默认是当前目录
匹配标准:默认是当前目录下的所有文件
处理动作:默认是将结果显示在屏幕上来
匹配标准:
-name FILE:对文件名做精确匹配(这里也可以使用文件名通配符来匹配文件)
-iname FILE:匹配文件名时不区分大小写
-regex PATTTERN:根据正则表达式来进行文件名匹配
-user USERNAME:根据属主来查找文件
-group GROUPNAME:根据属组来查找文件
-uid UID:根据uid来查找文件
-gid GID:根据gid来查找文件
-nouser :查找没有属主的文件
-nogreoup:查找没有属组的文件
-type 根据文件类型来查找
-f 普通文件
-d 目录文件
-l 链接文件
-c 字符设备文件
-b 块设备文件
-p 管道文件
-s 套接字文件
-size 根据文件大小来查找
[+|-] [#k | #M | #G]:+表示大于,-表示小于
说明:如果不加+或-,则表示在该[#k | #M | #G]内的都匹配
在匹配条件时,也可以组合匹配条件
-a:与关系
-o:或关系
-not:非关系
根据时间戳来匹配
-atime [+|-]#:根据文件的访问时间来匹配文件(单位是天)
-mtime [+|-]#:根据文件的修该时间来匹配文件
-ctime [+|-]#:根据文件的改变时间来匹配文件
+:表示至少#天没有[访问|修改|改变]过
-:表示#天内[访问|修改|改变]过
不加+或-:表示正好在第#天[访问|修改|改变]过
-amin:意义同上,只不过单位为分钟
-mmin:
-cmin:
-perm 根据权限来匹配文件
MODE:和这个权限一致的文件才匹配(精确匹配)
-MODE:文件权限包含此权限才符合条件
/MODE:只需要匹配文件中(九位权限中的)一位权限就匹配成功
处理动作
-print :显示到屏幕上
-ls :类似ls -l的形式显示该文件的详细信息
-ok COMMAND {} \; 对查找到的文件使用命令处理(使用该命令需要确认)
-exec COMMAND {} \; 同上,{}是引用前面已经找到的文件
本文出自 “linux学习之路” 博客,谢绝转载!