find文件查找命令

0) 简介

与之前一篇grep不同的是find属于文件属性匹配查找,

find命令相比之前的师兄locate来说优势明显,当然

这些都是建立在伟大的摩尔定律之上,对于处理器性能

不在是瓶颈时,如何让搜索变得更加精确,更具有定义

化便是find出先的意义


1) 查找分类

Usage: find [查找路径] [查找条件(支持通配符)] [处理动作]

find . -name Ops


a) 文件及文件权限查找

   -name  根据文件名匹配文件

1
2
# 搜索 /etc 目录下文件名为 fs 开头的所有文件
find  /etc  -name f*

   需要注意这里会搜索子目录

wKioL1MW4zTxmrCAAASuS0wV-bU593.jpg

1
2
3
# 指定最大深度之后,对文件的遍历只会
# 有一层(也就是当前目录)
find  /etc  -maxdepth 1 -name f*

   wKiom1MW4-eBCAn1AAEnpCBHml4694.jpg

   -iname  忽略文件名大小写匹配

1
2
# 忽略大小写查找,至于中文嘛,不解释   : )
find  /etc  -iname s*

   -type 与shell中文件测试类型相同

       f 查找的文件位普通文件(不包括目录)

1
find  ~ - type  f

      d 查找的文件类型为目录(不包括普通文件)

1
find  ~ - type  d

      b 查找的文件类型为块设备文件

1
find  /etc/dev  - type  b

      c 查找的文件类型为字符设备文件

      l 查找的文件类型为链接文件

      p 查找的文件类型为管道文件

      s 查找的文件类型为socket文件

  -size 根据文件大小进行查询

1
2
# 文件查询结果很像时间查询
# 具体请查阅时间查询

wKioL1MW3AeBuqjrAAN6MOAr82o142.jpg




   -perm 根据linux文件权限系统查找

     wKioL1MW2jqjc7mUAABRPa6Bbhk897.jpg      

1
2
3
4
5
6
# 如上图 +755 的条件可以匹配4种不同权限的文件
#+755 3个权限位任意一位对应ugo都可以
find  / -prem +755
# 如上图右 -755 的条件只能匹配 755 权限的文件
#-755 每一位权限必须完全匹配查找的文件
find  / -prem -755


b) 用户或用户组

   -user  根据文件的属主来查询        

1
find  . -user openstack

   -group 根据文件的属组查询

1
find  . -group openstack

   -uid根据文件的属主id查询

1
find  . -uid openstack

   -gid  根据文件的数组id查询

1
find  . -gid openstack

   -nouser  文件或目录没有属主

   -nogroup  文件或目录没有属组


c) 时间查询

wKioL1MW2gGDW6c9AAByq9Asoeo563.jpg

   -atime  查找访问时间在某天范围内的文件

1
find  . -atime +4 大于三天之前的文件

       (此时要查找的文件访问时间大于72小时)

1
find  . -atime -4 小于三天之内的文件

       (此时要查找的文件访问时间小于48小时)

1
find  . -atime 4 正好第三天的文件

       (此时要查找的文件访问时间在48<m<72)

   -mtime查找修改时间在某天范围内的文件

   -ctime查找创建时间在某天范围内的文件

   -amin访问分钟

   -mmin修改分钟

   -cmin创建分钟


d) 组合查询

   -a  并且

1
2
# 查找/etc/目录下大于1M且类型为普通文件的所有文件;
find  /etc/  -size +1M -a - type  f |  xargs  ls  -lh

wKiom1MW5_vjr24NAAHyUOI8WSI685.jpg

   -o  或者

1
2
# 查找当前系统上没有属主或属组文件;
find / \( -nouser -o -nogroup \)

   -not  非

1
2
# 查找/etc/目录下至少有一类用户没有写权限;
find  /etc/  -not -perm -222

wKioL1MW6gOR_-t2AANbrzmGU7k746.jpg


e) 其他操作

   查找到文件之后执行什么操作,都在这最后了 :)

   find . -type f [ -print ] 这便是find

   的默认动作,实现与打印当然我们可能会执行一

   些其他的-ls,-exec,-ok

wKioL1MW2liwzD42AADjwFaJ4Hw124.jpg

wKioL1MW2nWxB1lZAAWW4_I6MHc397.jpg


实例:

1
2
3
4
5
6
7
8
同样都是将查找结果管道给下一个操作
xargs 的好处就是查找的结果序列不会
一次分配到内存,这样按需获取提高程序
的执行效率
# 配合其他类型的查找
find  . -mtime 4 - exec  ls  -ld {} \;
# 将所匹配的文件改名备份
find  . -mtime 4 - exec  mv  {} {}.bak \;






     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1368745 ,如需转载请自行联系原作者

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/468683

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。