今天给大家带来的是常用而且功能异常强大的文件查找命令

                                                                                                 -----find


   一、常用的文本查找命令

       grep、egrep命令

         grep:文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,先是能够被模式匹配到的行。后面跟正则表达式,让grep工具相当强大。-E之后还支持扩展的正则表达式。

         # grep  [options]  'PATTERN'  file ...

           --color=auto:高亮显示被匹配的关键字

           -v:反向

           -o:仅显示被模式匹配的字串,而非整行

           - i:不区分大小写

           -E:支持扩展的正则表达式

           -A+n:仅显示被匹配到的行和其上n行

           -B+n:仅显示被匹配到的行和其下n行

           -C+n:仅显示被匹配到的行和其上、下n行

        # egrep  [options]  'PATTERN'  file ...

           选项和grep相同,egrep=grep -E  ,这里不再继续说明。

      locate命令

         locate:其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

       find命令

       find:实时查找,精确匹配,速度略慢

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

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

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

                         处理动作:显示在标准输出上

   二、find命令详解

       (一)、查找条件

               -name  "文件名称":支持文件名通配

               -iname "文件名称":支持文件名通配,不区分大小写

               -user  "用户名":根据属主查找

               -group  "组名":根据属组查找

               -uid    "UID":根据UID查找

               -gid    "GID":根据GID查找

               -nouser:查找没有属主的文件

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

                 ◆当一个用户被删除,那么该用户的文件就会变成没有属主或属组的文件

       (二)、组合条件

               -a:和与相同,同时满足

               -o:与或相同,满足其一皆可

               -not、!:与非相同,取反

               -type:根据文件类型查找

                       f:普通文件

                       d:目录

                       b:块设备

                       c:字符设备

                       l:符号链接文件

                       p:命令管道工具

                       s:套接字文件

               根据文件大小查找

                   -size  [+|-]单位

                       +2M:大于2M的

                        -2M:小于1M的

                         2M:1.1~2M的

                       常用单位:k、M、G

                   例:大于2M的  

                       # find -size +2M

               根据时间戳查找

                       以天为单位(tim

                           -atime   [+|-]n:被访问的n天

                           -mtime  [+|-]n:被修改的n天

                           -ctime   [+|-]n:被创建的n天

                               +2:大于3天的

                               - 2:小于2天的

                                 2:2天到3天的

                       以分钟为单位(min)

                           -amin   [+|-]n:被访问的n分钟

                           -mmin  [+|-]n:被修改的n分钟

                           -cmin    [+|-]n:被创建的n分钟

                               +2:大于3分钟

                         -2:小于2分钟

                   2:2分钟到3分钟

              根据权限查找

                -perm  [+|-]权限

                  MODE:精确匹配

                  +MODE:任何一类用户的任何一位权限匹配,常用语查找某类用户的特点权限是否存在

                  -MODE:每类用户的任何一位都匹配,每类用户的指定要检查的权限都匹配

       (三)、处理动作

           -print:打印在标准输出上

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

           -exec COMMAND\:对查找的文件执行制定的命令

           -ok COMMAND\:交互式的-exec

                find把查找到的文件一次性的传递给-exec所指定的命令

           如果查到到的是多个文件要加{},{}是占位符,表示接受前面find查找的文件,并对文件依次执行动作

                       格式: find -exec {} \;

                    例:# find -iname *.sh -exec chmod a-x {} \;  

           xargs命令

                   find|xargs COMMAND 一次性接受一批文件,通过管道直接修改

                   例:# find -iname text.sh | xargs chmod a+x