find命令详解

    Linux下find命令详解

    


    一、find命令

    find命令是一种用来在Linux系统中查找定位文件的很好用的工具。

    find命令是一种实时查找工具,根据文件层级结构,通过遍历指定的起始路径下的所有文件来查找目标文件。它的查找准确度高,实时性高,但相应的,查询速度会有所降低。



    二、命令详解

    find命令的一般语法为下:

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


     1、OPTIONS:一般用不到;

    2、查找起始路径:指定具体搜索目标起始路径,默认当前目录;

     3、查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等标准,默认为指定路径下的所有文件;

    4、处理动作:对符合查找条件的文件做出的操作,默认为输出至标准输出(-print)。

          

    其中需要详细分析是查找条件和处理动作。

    查找条件:

    a)根据文件名查找:

     -name "pattern":查找支持文件名glob风格的匹配;

    -iname "pattern" :查找支持文件名glob风格的匹配,且不区分大小写;

    -regex "pattern":查找支持正则表达式匹配,但是其匹配整个路径而非其名;需注意


    b)根据文件从属关系查找:

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

     -group Groupname:查找属组指定用户的所有文件

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

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

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

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

    

    c)根据文件类型查找:

    -type TYPE:f,查找普通文件

          d,目录文件

          l,查找符号链接文件

          b,查找块设备文件

          c,查找字符设备文件

          s,查找套接字文件

          p,查找命名管道文件


    d)根据文件大小查找:

    -size [+|-] #UNIT

           常用单位,K、M、G,默认单位为字节

            #UNIT:(#-1,#],查找以该单位为精度的准确大小的文件

           -#UNIT:[0,#-1],查找0到#-1大小的文件,包括#-1大小的文件

           +#UNIT:(#,∞),查找#到无穷大大小的文件,不包括#大小的文件


    e)根据时间戳查找:(因为时间戳都是来自过去的改动,所以可以将#理解为负数,如-7为7天前到现在)

    以“天”为单位:-atime,-mtime,-ctime

           #:(#-1,#],查找第#天内有过时间戳改动的文件

           -#:(#,0],查找从#天到现在有过时间戳改动的文件

           +#:(∞ ,#-1],查找#-1天以前有过时间戳改动的文件

    以“分钟”为单位:-amin,-mmin,-cmin

           范围表示用法同上。


    f)根据文件权限查找:

    -perm [/|-]mode

              mode:精确查找权限匹配的文件

           /mode:查找任何一类用户(ugo)的权限中的任何一位(rwx)符合条件的文件(9位权限之间存在“或”关系)

           -mode:查找每一类用户的权限中的每一位同时符合条件的文件(9位权限之间存在“与”关系 )   

                            

    g)组合查找:

    与:-a,默认组合逻辑(可省略),查找2个条件同时满足的文件

    或:-o,查找符合任意一个条件的文件

    非:-not,!查找与条件相反的所有文件

     2个公式: !A -a !B=!(A -o B)

          !A -o !B=!(A -a B)



    处理动作:

    -print:输出至标准输出;默认

     -ls:类似 ls -l

     -delete:删除查找到的文件

     -fls /path/tosomefile:把查找到的所有文件的详细信息保存至指定文件中

     -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认 ({}:引用找到的文件

     -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令

     注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;

你可能感兴趣的:(find)