find和locate同为文本查找,主要区别在于:

  1. find实时查找,速度难匹配精确 消耗资源

  2. locate:依赖数据库,非实时精确查找,结果精确,查找速度快,模糊查找。


下面我们介绍下find的一些基本用法

find可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。还可以通过匹配符进行详细查找。

1.基本用法:

  • find [options] [查找位置\路径] [查找标准\条件][处理动作]
  • 查找路径:省略则作为当前目录查找。
  • 查找 条件:没有指定标准就查找指定路径下的所有文件。
  • 处理动作:默认为显示动作 。print。


名称查找:

  • -name “文件名称”,支持使用globbing,文件名统配机制。
  • -iname:不区分字符大小写。
  • find /etc -name "passwd"根据名称查找passwd名字。

wKiom1MUmN7zAQj-AAB_XGE5iCY426.jpg

wKiom1MUmTnBTHOZAAB5c9P7ugQ206.jpg



2)根据属主和属组查找。

  • -user UserName:属主查找。

    -group GroupName:s属组查找。


3)根据UID和GID查找。

  • 根据uid和gid的原因主要是防止用户被删除了还存在家目录,这样可以根据UID和GID查出。
    find /tmp -uid 500
    find /tmp -gid 500


4)查找没有属主的文件。

  • -nouser:查找没有属主的文件。
    -nogroup:查找没有属组的文件。
    find /tmp -nouser
    find /tmp -nogroup


5)组合条件。

   -a:与,同时满足。
   -o:或,满足一个。
   -not,!:非,取反的。


find /tmp -user hadoop -a -not -name "*.txt"=》意为查找用户为hadoop非.txt结尾的文件。

6)根据类型查找。

  • -type:
    f:普通文件。
    d:目录。
    b:块设备。
    c:字符设备。
    l:符号链接。
    p:命名管道。
    s:套接字。


7)根据文件大小查找。

   -size [+|-]#Unit
   例如:-size +2MB大于2MB,-2MB小于,2MB等于。(精确匹配)。

wKiom1MUp3WQfiKvAAHfUhpyRDY293.jpg

wKioL1MUodrjYhF0AADsSYMy2q0427.jpg


8)根据时间戳查找。

  以天为单位(time)
  -atime:[+|-]#访问时间。
  -mtime:修改时间。
  -ctime:改变时间。


9)根据权限查找。

-perm [+|-]MODE(权限)
MODE:表示精确匹配
+MODE:任何一类用户任何一位权限匹配即可。
-MODE:每类用户的任何一位都匹配。



wKioL1MUqaPQ9zTIAAC1YupZn4Y540.jpg


 处理动作:


1 )-print:打印在标准输出上。(默认)
2 )ls:以长格式输出各文件信息。
3 )-exec COMMAND \;:对查找到的文件执行指定的命令。

4)-ok COMMAND \;:交互式的-exec。


  | xargs COMMAND(注意:find把查找到的所有文件一次性的传递给-exec所指定的命令)

头要炸了=。=!