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 ,如需转载请自行联系原作者

相关文章
|
安全 Shell Linux
linux命令之find查找文件
find 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
240 0
|
Shell Linux
which、type、whereis、locate几个命令的区别与联系
对于Linux系统来说,我们经常面对的是字符界面环境。很多时候,我们无法很直观地搜索、查找到我们需要的文件。
1334 0
|
开发工具 数据库
|
机器学习/深度学习 数据库