Find命令详解

    Find是linux中的一个极其强大的文件查找命令;可以根据目标文件的文件名、大小、类别、权限、时间戳等条件来进行查找,只有完全相符的才会被列出来;下面会详细介绍下Find命令的用法。

    名称:find

    格式:find [目标路径] [条件选项] [处理动作] 

    条件选项:

        -name:根据文件名查找

        -iname:忽略目标文件名的大小写

           支持通配符:

               *,?,[],[^]

            例:find /etc -name(-iname) “passwd” 查找名字里面包含passwd的文件              

             例:find /etc -name(-iname) “p*” 查找以p开头的文件

        -type:根据文件类型查找

            

                                      f:普通文件

d:目录文件

l:符号链接文件

b:块设备文件

c:字符设备文件

p:管道文件

s:套接字文件

                例:find /etc -type f  查找/etc下是类型为文件的

        

        根据文件的从属关系:    

          -user USERNAME:查找属主指定用户的所有文件

                例:find /etc -user root 查找/etc属主为root的所有文件


    -group GROUPNAME:查找属组指定组的所有文件

    -uid UID:查找属主指定的UID的所有文件

    -gid GID:查找属组指定的GID的所有文件

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

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

        

        -size:根据文件大小查找

            常用单位:K、M、G

                例:find /etc -size [+|-]1K 查找/etc下所有大于|小于1K的文件


        根据时间戳查找:

          以天为单位   

            -atime[+|-]:根据访问时间

                例:find /etc -size [+|-]7 查找一周之内访问过的文件                

            -mtime:根据修改时间

            -ctime:根据改变时间

           可以以分钟为单位


        -perm:根据文件权限查找

            -perm [/|-] 权限

            例:

             1. find /etc -perm 666 查找/etc下权限为666的所有文件

            2. find /etc -perm /222 查找/etc下[u,g,o]任何一类用户有写权限的文件

             3.find /etc -perm -222 查找/etc 下[u,g,o]同时满足写权限的文件

        

        组合测试:

            -a:与

                     例:find /etc -name “passwd” -a -user root

                 查找/etc下名字含有“passwd” 且属主为root的文件名  

            -o:或

                例:find /etc -type f -o -size +10K

                  查找/etc下类型为文件或文件大小大于10k以上的文件

            -not|!:非

                  例:find /etc ! -name “passwd”

                  查找/etc下名字里没有passwd的文件


    处理动作:

        -print:默认的,输出至标准输出

        -ls:相当于执行ls -l

        -delete:对查找到的文件进行删除

        -fls:对查找到的文件以长格式的方式保存到指定的文件中 

        

find命令可以结合xargs命令,避免了有些命令过长导致报错;下面介绍下xargs的简单用法:

        

        xargs命令:将前一个命令的输出作为参数

         

            作用:是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题       

           格式:xargs [options] [command]... 

          

            常用选项:

                -p:操作具有可交互性

     -i:得到的每项名称替换为{}

     -n:限制单个命令行的参数

     -t:输出命令执行的详细信息

           

        例:find /etc -name "passwd" | xargs -t ls -lh    

            查找/etc下名字有passwd包含的文件并且人性化的输出