一.find命令在一个目录(及子目录)中搜索文件

   locate在数据库搜索文件

   findloacte的区别

   find:

      实时查找:速度慢

      精确匹配

   locate:

  依赖于数据库

         非实时查找,结果非精确

         查找速度快

         模糊查找

二.find命令用法:

 find [options] [查找路径] [查找条件] [处理动作]

 查找路径:默认为当前目录

 查找条件:默认为查找指定路径下的所有文件

 处理动作:默认为显示

1查找条件

1)根据文件名查找:

–[i]name  "文件名称”

文件名支持通配符 (* ? [ ] [^ ])

和i一起使用,查找时不区分文件名字符大小写。

eg1如下所示查找文件名含yum的文件,不区分大小写。

wKioL1MUHYWymVVYAABH54RLIlw761.jpg


2)根据文件属主属组查找:

-user UserName 或者-uid UID        根据文件属主或者uid查找;

-nouser                           查找没有属主的文件

-group GroupName 或者-gid GID     根据文件属组或者gid查找;

-nogroup                          查找没有属组的文件;

Eg2查找/tmp目录下属组为root的文件

wKioL1MUHa-DUQdkAABe4qGKK18435.jpg

3)根据组合条件查找:

-a: 与,同时满足

-o: 或,

-not, !:非,取反

非A,并且非B: 非(A或B)

非A,或非B: 非(A且B)

Eg3查找/tmp目录下属主为hyd并且文件名为aaa的文件。

wKiom1MUHfOSZzzEAABFCiYhXXE986.jpg

4)根据文件类型查找

-type [f,d,b,c,l,p,s]

f: 普通文件

d: 目录

b: 块设备

c: 字符设备

l: 符号链接文件

p: 命名管道

s: 套接字

eg4查找/tmp目录下是目录的文件

wKioL1MUHeLC6JP2AAAxDiV7aus056.jpg

5)根据文件大小查找

   -size [+|-]#Unit #:    (#-1)<x<=#

                 Unit(常用单位):k, M, G

  Eg5查找/tmp目录下

wKioL1MUHffCyTaXAACXiSfhHiA092.jpg

文件大于2k的文件。

6)根据时间戳查找:

  以天为单位(time):

      -atime(访问时间)[+|-]#

         +: 表示(#+1)天之外被访问过;

         -: 表示#天之内被访问过;

无符号:表示短于(#+1)> x >=#天的时间段被访问过;

      -mtime(修改时间)用法同上

      -ctime(改变时间)用法同上

以分钟为单位(min):

      -amin[+|-]#用法同上

      -mmin用法同上

      -cmin用法同上

Eg6查找/tmp目录下文件改变时间在30分以内的文件。

wKiom1MUHjzwAzLUAACZudhGTlU783.jpg

7)根据文件权限查找

-perm [+|-]MODE

MODE:精确匹配

+MODE: 任何一类用户的任何一位权限匹配

-MODE: 每类用户的指定要检查的权限位都匹配;

Eg7查找/tmp目录下文件所有文件属主具有读写,属组具有写其,他具有执行的权限的文件。

wKiom1MUHkzy7xc_AACFVr7uvXA892.jpg

2根据处理动作查找

      -print:打印在标准输出上;

      -ls:以长格式输出各文件信息;

      -execCOMMAND {} \; :对查找到的文件执行指定的命令

{}表示占位符,接收来自前方find命令所查找的文件,并对文件操作。

Eg8查找/tmp目录下文件改变时间在60分种以内的文件并且列出来。

wKiom1MUHmSA4iEtAABN9VCeHCs279.jpg

      -okCOMMAND {} \; : 交互式的-exec;

Eg9查找/tmp目录下文件改变时间在30分以内的文件,需要交互。

wKiom1MUHq7yKPPMAACJNV-CWbA237.jpg

find | xargs COMMAND

Eg10查找/tmp目录下文件名含doc的文件无法删除

wKioL1MUH5vDN3KSAABqQ7DAzvs969.jpg

管道传递的事字符串,而不是文件,不能做文件处理,可以用xargs

Eg11查找/tmp目录下文件名含doc的文件可以法删除

wKiom1MUHwuzCy3FAAA-88ab1yo698.jpg

find把查找到的所有文件一次性地传递给-exec所指定的命令xargs命令每次只获取一部分文件而不是全部。下面的例子只能用-exec,不可以用xargs.

Eg12查找/tmp目录下文件名含doc的文件,并重命名为dox

wKioL1MUHwPCHPOGAABJRjG8nuQ064.jpg