Linux上find命令详解

Linux系统上常用的文件查找工具:

 find:

      实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;

工作特性:

查找速度略慢;

精确查找;

实时查找;

用法及格式:

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

        查找起始路径:默认为当前目录;可以指定系统内的任意路径,但不建议使用/

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

 处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;

注意:find查找起始路径,对于刚入门学习Linux的伙伴要记清楚,文件路径一定要在find之后。

Linux上find命令详解_第1张图片

查找条件:

       根据文件名查找:

-name  "pattern"

-iname "pattern"(不区分大小写)

支持glob风格的通配符;

*:匹配任意长度的任意字符; ?:匹配任意单个字符;[]:匹配指定集合内的任意单个字符; [^]:匹配指定集合外的任意单个字符;

wKioL1b2C5KCmtfcAAAV_3hRdR4111.png

根据文件从属关系查找:

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

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

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

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

wKiom1b2Fo2hPxhWAAAYKvRIt6I710.png

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

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

根据文件的类型查找:

-type TYPE:

f: 普通文件

d: 目录文件

l:符号链接文件

b:块设备 文件

c:字符设备文件

p:管道文件

s:套接字文件

组合测试:

与:-a, 默认组合逻辑;

或:-o

非:-not, !

Linux上find命令详解_第2张图片

根据文件的大小查找:

-size [+|-]#UNIT

常用单位:k, M, G

#UNIT:(#-1, #]

                          2M=1M-2M 

-#UNIT:[0,#-1]

                         -2M=0M-1M

+#UNIT:(#, oo)

                        +2M=大于2M

根据时间戳查找:

  以“天”为单位:

  -atime  [+|-]#

    #:[#, #-1) #: 例如:今天为3月10日,3就是3月7日到3月8日(注意天是24小时制)

    -#:(#, 0] -#: 例如:今天为3月10日,-3就是三天内指,3月7日的现在时间到现在的时间

  +#:(oo, #-1]+#: 例如:今天为3月10日,+3就是三天前之前指,3月7日前

-mtime

-ctime


根据权限查找:

-perm  [/|-]mode

mode:精确权限匹配;

/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;

       9位权限之间存在“或”关系;

-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;

       9位权限之间存在“与”关系;

Linux上find命令详解_第3张图片

处理动作

  -print:输出至标准输出;默认的动作;

  -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;

  -delete:删除查找到的文件;

  -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;

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

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

注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:find | xargs COMMAND

Linux上find命令详解_第4张图片
















你可能感兴趣的:(linux)