在Linux当中ls命令是用于输出显示目录中文件信息的命令。但是ls命令的功能比较单一,当我们需要根据某种条件查找文件的时候我们就要find命令。例如我们要查找我们系统里面有没有文件名为passwd的文件的时候,我们可以用

wKiom1LHvFjRM-7KAAA9i79U3ZE689.jpg

这个时候会将我们系统里所有passwd文件显示出来。

find命令的基本用法

find [目录] [选项] [条件] [动作]

find在做查找的时候会做递归查找,默认的目录为当前的工作目录,默认的动作为-print即标准输出。find命令的用法比较复杂,我们只对该命令的一些基本用法做了解


选项

   -name pattern:根据文件名做查找,可以使用通配符。?,*,[]但是这些符号在find命令中有其他含义,所以我们在使用通配符的时候可以用“”引号将要匹配的模式给引起来,或者使用\转义符将通配符做转移处理。

   -iname pattern:用法和-name类似但是会忽略掉模式的大小写。

   -type

           f:普通文件-

           d:目录文件

           b:块设备文件

           c:字符设备文件

           l:符号链接文件

           p:管道文件

           s:套接字文件

   -user USERNAME:查找所有属主为USERNAME的文件。

   -group GRPNAME:查找所有属组为GRPNAME的文件。

   -size:根据指定的文件大小来查找。

           [+|-]c:for bytes以字节为单位

           [+|-]k:for Kilobytes(units of 1024bytes)

           [+|-]M:for Megabytes(units of 1024*1024bytes)

           [+|-]G:for Gigabytes(units of 1024*1024*1024bytes)

   -atime [+|-]number:number为天数,以访问时间查找。

   -mtime [+|-]number:number为天数,以修改时间查找。

   -ctime [+|-]number:number为天数,以改变时间查找。

   -amin [+|-]number:number为分钟数,以访问时间查找。

   -mmin [+|-]number:number为分钟数,以修改时间查找。

   -cmin [+|-]number:number为分钟数,以改变时间查找。

   -perm [+|-]mode:mode为权限数。

        不带[+|-]表示精准匹配。

        +mode:每一类用户的任何一位权限位匹配即可。即属主,属组,other任意匹配一个都可以

        -mode:每一类用户的每一位权限位匹配才可,即属主,属组,other都要被匹配。


下面来实际操作一下find的用法。

一、以文件名做查找:-name

wKioL1LH4LyQOrecAABXt4ZgzeM475.jpg

   以上命令会查找所有以数字开头的文件并显示出来,包括当前工作目录下的目录里的所有文件。

二、以文件的类型做查找:-type

wKioL1LH4ZjRb9r5AAB5qC7IPRc267.jpg

   所有的目录都显示出来了,包括本地目录的子目录。

三、以文件的属主和属组做查找

wKioL1LH4ifwWsZhAABidKa7pwU880.jpg

   /home目录下所有属主为hadoop用户的所有文件都显示出来了。

四、以文件的尺寸大小做查询

wKioL1LMsf7jWmVyAABbZdhkCiE317.jpg

以上命令输出了当前目录中文件大小在7*1024-8*1024bytes之间的所有文件,再看看-,+的用法

wKiom1LMszKyFduJAAB6LRgIQEA444.jpg

当使用-size -8k的时候当前目录中所有文件小于8*1024bytes的文件被查找出来。

wKiom1LMs7jyXt2NAABige_BJiQ265.jpg

使用-size +8k的时候当前目录中所有文件大于8*1024bytes的文件被查找出来。

五、以文件的被访问时间做查找。

-atime,mtime,ctime以天数做单位。

-amin,mmin,cmin以分钟做单位。

-atime和-amin是以访问时间做查找。mtime和mmin是以修改时间做查找。ctime和cmin是以改变时间做查找。

当我们需要用文件的时间戳来作为查找条件的时候都是以现在的时间往前做查找的。如果是一个没有带+-符号的时间,意思为查找当前时间之前第几天或者第几分钟的文件,如果为-number即问当前时间第number天之前到当前时间这个时间段被修改过的文件。+number则表示当前时间之前number天或分钟之前被修改的所有文件

wKioL1LMvGyCKdaRAAAUJ5KbCgo930.jpg


五、以文件所拥有的权限做查找

wKiom1LMvZrBxXsbAAA2ylu9x_0984.jpg

当-perm后面的权限没有+-号的时候是做的精确匹配,如上例中只有600权限的文件被查找到



   (未完)