本文详细介绍了Linux中Find命令的相关知识


在文件系统中,我们常常会去查找某个文件,而在Linux中locate和find都是用于查找文件的。

其中locate命令是非实时查找,它会根据数据库进行查找,所以速度快,但属于模糊查找。命令的格式是 # locate FILE。而find是实时查找,精确匹配,但速度慢。


(1)命令格式

#find [查找位置] [查找标准] [处理动作]

   查找位置:默认为当前目录;

   查找标准:默认为查找指定目录下的所有文件;

   处理动作:默认为显示到标准输出。


(2)选项

1.查找标准选项:

   -uname "文件名称" :根据文件名查找(支持glob)

wKiom1NT2m_T3SusAABy7kagHUE936.jpg

   -iuname "文件名称" :根据文件名查找,但是不区分大小写

wKiom1NT2tfTXc5YAABSpM1WR9g599.jpg

   -user USERNAME :根据属主查找

wKioL1NT22TTlropAABhAMgiGvk253.jpg

   -group GRPNAME :根据属组查找。这里不在举例

   -uid UID:根据uid查找

wKiom1NT2-vg5nDtAAB1TJ9YC9M830.jpg

   -gid GID:根据gid查找

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

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

   -type:根据文件类型查找    

       f:普通文件
       d:目录
       b:块设备
       c:字符设备
       l:符号链接
       p:命名管道
       s:套接字文件

wKioL1NT3IbwiV7GAABg6hehil8623.jpg

   -size :根据文件大小查找

     这里有些特殊,例如# find -size 12M执行后只会显示大小为11M到12M之间的文件。而# find -size +2M则是显示文件大小大于2M的文件,# find -size -2M则是显示文件大小小于2M的文件。常用的单位有k(必须小写),M(大写),G(大写)

wKioL1NT3V2R5AOjAABggZ6M_e4575.jpg

   -atime [+|-]#:查找最后#天访问的文件,类似的命令还有-amin

   -mtime [+|-]#:查找最后#天修改的文件,类似的命令还有-mmin

   -ctime [+|-]#:查找最后#天改变的文件,类似的命令还有-cmin

   -perm [+|-]MODE:根据权限查找

       没有[+|-]表示精确权限匹配

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

       -MODE:3类用户的每一位权限都需要包含


2.组合条件查找选项:

   -a:与(默认)

   -o:或

   -not,!:非

   例如:查找/tmp目录下没有属主,并且文件名以一个字符.test文件:

               # find /temp -name "?.test" -nouser -ls


3.处理动作选项:

   -print:打印查找到的文件

   -ls:显示查找到的文件的详细信息
   -exec COMMAND \;  :执行其他命令

        例如把30天没访问的文件改为原文件名.old:

           # find /tmp -atime +30 -exec mv {} {}.old \;

   | -xargs -i :执行其他命令,与-exec一样
   -ok COMMAND \;   :执行其他命令。每一个要确认