Linux下find命令在目录结构中搜索文件,并执行指定的操作。
linux下find命令提供了相当多的查找条件,功能很强大,所以它的选项也很多,其中有许多的选项都值得我们深入的了解学习。


    命令格式:find pathname -options [-print -exec -ok ...]
    命令功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
    命令参数:
        pathname:find命令所查找的目录路径。例如,用.来表示当前目录,用/来表示系统根目录。
        -print:find命令将匹配的文件输出到标准输出。
        -exec:find命令对匹配的文件执行该参数所给出的shell命令。
        -ok:和-exec的作用相同,只是以一种更安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

 

下面就进入find命令选项的功能详情:
1、-name    按照文件名查找文件
   文件名选项是find命令最常用的选项,可以单独使用该选项,也可以其他选项一起使用。  可以使用某种文件名模式来匹配文件,注意要用引号将文件名模式引起来。  不管当前路径是什么,可用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。

例如:

   想要在当前目录及子目录中查找所有的‘ *.log‘文件,可用: 
    Linux下find命令详情_根目录

   想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可用:
    Linux下find命令详情_linux_02

   想要在/etc目录中查找文件名以host开头的文件,可用:
    Linux下find命令详情_根目录_03

   想要查找$HOME目录中的文件,可用:
    Linux下find命令详情_根目录_04

2、-perm    按照文件权限查找文件
   按文件权限模式来查找文件的话。最好使用八进制的权限表示法。 
   在当前目录下查找文件权限位为644的文件,可用:
    Linux下find命令详情_根目录_05

3、-prune   忽略某个目录
   使用-prune选项来指出需要忽略的目录。如果同时使用了-depth选项,那么-prune选项就会被find命令忽略。

   在file1目录下查找文件,但不希望在file1/file3目录下查找,可以用:

   Linux下find命令详情_linux_06

4、-user    按照文件属主来查找文件
   -nouser   查找无有效属主的文件

   在$HOME目录中查找文件属主为yangning的文件

 Linux下find命令详情_根目录_07

    为了查找属主帐户不存在的文件,可以使用-nouser选项。
   在/home目录下查找所有的这类文件
   如:find /home -nouser -print
5、-group   按照文件所属的组来查找文件
      -nogroup  查找五有效所属组的文件
   就像user选项一样,针对文件所属于的用户组。

   在/apps目录下查找属于gem用户组的文件,可以用: 
   find /apps -group gem -print 
   要查找没有有效所属用户组的所有文件,可以使用nogroup选项。
   从文件系统的根目录处查找这样的文件,可用:
   find / -nogroup -print
6、-type       查找某一类型的文件
   b  --   块设备文件
   d  --   目录
   c  --   字符设备文件
   p  --   管道文件
   l  --   符号链接文件
   f  --   普通文件
   在当前目录下查找所有的目录  

Linux下find命令详情_linux_08

   在/etc目录下查找所有的符号链接文件

Linux下find命令详情_linux_09

7、-size n: [c]          查找文件长度为n块的文件,带c时文件长度以字节计
   在当前目录下查找文件长度大于1000字节的文件,可用:

Linux下find命令详情_根目录_10

      在当前目录下查找长度超过10块的文件(一块等于512字节) 
      Linux下find命令详情_linux_11

8、-depth   查找文件时,首先查找当前目录中的文件,然后在其子目录中查找
   从文件系统的根目录开始,查找一个名为CON.FILE的文件。   
   Linux下find命令详情_根目录_12

   它将首先匹配所有的文件然后再进入子目录中查找

9、-newer file1 !file2     查找更改时间比file1新但比file2旧的文件
   查找更改时间比文件file新但比文件file1旧的文件

Linux下find命令详情_linux_13

10、-mtime -n +n   按照更改时间查找文件
        -atime -n +n   按照访问时间查找文件
        -ctime -n +n   按照改变时间查找文件
    用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
    希望在系统根目录下查找更改时间在10日以内的文件,可以用:
    Linux下find命令详情_根目录_14

以上是我对find指令一些选项的学习总结,难免有疏漏,见谅!!!!