文件查找命令find介绍及使用

find概述

1 find介绍

find是一个实时查找命令,可以精确查找,支持众多查找标准,由于是遍历指定目录中的所有文件a查找的,所以速度相对较慢

2 find的命令格式

find   查找路径 查找标准 查找到以后要处理的动作

查找路径:  默认的是当前路径

查找标准:  

(1) 根据文件名查找                       -name   filename  

支持文件名匹配,但严格区分大小写,如要不区分大小写,使用-iname

如:查找/tmp下的以.txt结尾的无文件

   find   /tmp   -name  *.txt 

(2) 基于正则表达式的文件名查找           -regex    parttern 

如:查找 

(3) 根据文件所有者(属主)查找           -user     username

如:查找、tmp下属主是root的文件

find  /tmp   -user root

(4) 根据文件属组查找                     -group    groupname

(5) 根据文件属主uid查找                  -uid      uid

(6) 根据文件属组gid查找                  -gid      gid

(7) 查找没有属主的文件                    -nouser    

(8) 查找没有属组的文件                    -nogroup

(9) 根据文件的类型查找                    -type     fdcblps

相信大家知道fdc ......他们代表的文件类型了,这里就不做说明了

如:查找/tmp下文件类型为目录的文件

find   /tmp   -type  f

(10) 根据文件的大小查找                    -size     [+|-]#(kMG)

表示大于,-表示小于

KMG表示单位

如 +7k    表示大于7k的文件

   -7M    表示小于7M的文件

(11) 根据文件时间属性查找   

     根据访问文件的时间                    -atime|-amine       [+|-]#

     根据文件改变时间查找                  -ctime|-cmine       [+|-]# 

     根据文件修改时间查找                   -mtime|-mmine      [+|-] #

   [+|-]# 和上面一样,+#表示至少多少时间内没访问过,-#表示#时间之内访问过

   (-atime-ctime-mtime)的单位是天(-amine-cmine-mmine)单位是分钟 

(12) 根据文件的权限查找                     

  -perm     mode|-mode|/made

                   mode   表示精确匹配

                   -mode   表示有一位匹配就行(本身包含或的关系)

                   /mode    文件权限能完全包含MDOE时才能找到(本身包含且关系)

如:查找查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root的文件

find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \; 

处理动作:

  -print                     显示查找结果

  -ls                        类似ls -l显示每个文件的信息

  -ok  COMMAND  {}  \;    

COMMAND是指令,命令行操作 {}表示当前找到的路径文件; \;必须有,表示结束

  -exec  COMMAND {}  \;  (与-okl一样,但-ok的每一步操作都需要你确认是否执行,而-exec不用)

如:查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;

find /etc -not -perm /222 -ls

3.组合条件:就是组合查找条件的

            -a    与条件

            -o    或条件

            -not   非条件

 (如果给出了两个条件没有给连接方式时时默认的就是与逻辑

 not权限最高 带括号的时候,括号要用反义;与的优先级高于或

如:查找/tmp下文件类型为f 且大小大于10k的文件

find /tmp  -type d  -a  -size  +10k 

查找/usr目录下不属于root,bin,student的文件;

find /usr -not -user root -a -not -user bin -a -not -user student

find /usr -not \( -user root -o -user bin -o -user student \)

查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root

find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;