find命令详解

find命令详解

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

一、工作特性:

  • 查找速度略慢;
  • 精确查找,只查找文件路径的基名而非整个路径;
  • 实时查找;
  • 可能只搜索用户具备读取和执行权限的目录

二、 用法:

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

  • 查找起始路径:指定具体搜索目标起始路径;默认为当前目录;
  • 查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默认为找出指定路径下的所有文件;
  • 处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;

1. 查找起始路径

查找时,可以指定搜索层级:

  • -maxdepth level 最大搜索目录深度,指定目录为第一等级,其子目录为2等级;
  • -mindepth level 最小层级目录深度搜索,指最少搜索多少层
    例子:只显示目录的二层,
    ~]$find -maxdepth 2 -mindepth 2 -name file

2、查找条件

即表达式,由选项和测试组成;测试结果通常为布尔型(”true”, “false”)

①根据文件名和inode查找:

  • -name “pattern”:区分字符大小写
  • -iname “pattern”:不区分字符大小写
    注意:此处pattern支持glob风格的通配符;例如 *, ?, [], [^]
  • -samefile name 相同inode好的文件
  • -links n 链接数为n文件
  • -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非基名;一般不用;

② 根据文件从属关系查找:

  • -user USERNAME:查找属主指定用户的所有文件;
  • -group GRPNAME:查找属组指定组的所有文件;
  • -uid UID:查找属主指定的UID的所有文件;
  • -gid GID:查找属组指定的GID的所有文件;
  • -nouser:查找没有属主的文件(不用跟用户名);
  • -nogroup:查找没有属组的文件(不用跟组名);

③ 根据文件的类型查找:

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

④ 组合测试:

  • 与:-a, 默认组合逻辑,可省;
  • 或:-o
  • 非:-not, !
  • 德.摩根定律

    • (非P)或(非Q)=非(P且Q)
      +(非P)且(非Q)=非(P或Q)
      注意:使用摩根定律时括号加上转义符\
      例子:
      !A -a !B = !(A -o B)
      !A -o !B = ! (A -a B)

⑤ 根据文件的大小查找:

  • -size [+|-]#UNIT
    常用单位:k, M, G

    • #UNIT:(#-1, #]
      如:6k 表示(5k,6k]
    • -#UNIT:[0,#-1]
      如:-6k 表示[0,5k]
    • +#UNIT:(#, oo)
      如:+6k 表示(6k,无穷)

⑥ 根据时间戳查找:

以“天”为单位:

  • -atime [+|-]#

    • #:[#, #-1)
    • -#:(#, 0]
    • +#:(oo, #-1]
  • -mtime
  • -ctime

以“分钟”为单位:

  • -amin
  • -mmin
  • -cmin

⑦ 根据权限查找:

  • -perm [/|-]mode

    • -mode:精确权限匹配;每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;非0权限位的“与”;只有当前面有/或者-时候,0表示不关注
    • /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;非0权限位的“或”;
      find -perm 755 会匹配权限模式恰好是755的文件
      只要当任意人有写权限时,find-perm+222就会匹配
      只有当每个人都有写权限时,find-perm-222才会匹配
      只有当其它人(other)有写权限时,find-perm-002才会匹配
      #### ⑧ 查找比某个文件新或比某个文件旧
  • -newer:选项
    格式为:-newer newest_file_name ! -newer oldest_file_name

3、处理动作:

  • -print:输出至标准输出;默认的动作;
  • -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
  • -delete:删除查找到的文件;
  • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
  • -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;此处{}表示引用找到的文件的文件名;
  • -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;此处{}表示引用找到的文件的文件名;

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

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/71346

(0)
oranixoranix
上一篇 2017-03-19 16:15
下一篇 2017-03-19 16:52

相关推荐

  • 0811linux基础小记(shell编程基础)

    1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 #!/bin/bash echo "hostname: `hostname`" echo "OS VERSION: `cat /etc/issue`" e…

    Linux干货 2016-08-15
  • haproxy代理服务

    HAProxy: LB Cluster:         四层:   lvs, nginx(stream),haproxy(mode tcp)         七层:   http: nginx(http, ngx_http_upstrea…

    Linux干货 2017-05-17
  • Linux 常用命令之cp,一个可以煮饭的工具;

    cp 复制目录和文件 对于系统管理员来说,在文件系统中将文件和目录从一个位置复制到另外一个位置是家常便饭,而cp就是可以煮饭的工具之一。cp需要源对象和目标对象,源对象在前,目标对象在后面。 1. 常用选项 基本用法 [root@local tmp]# ll total 0 -rw-rw-r–. 1 gen…

    Linux干货 2016-08-02
  • 马哥教育第20期一班第一周作业

    一、利用echo将下图弄成闪烁;字体自带颜色且有下滑线? [root@centos7 ~]# echo -e "\033[31m\033[4m\033[5m\0052\0052\0052\0052\0052\0052\0052\n \0052\0052\0052\0052\0052\n &…

    Linux干货 2016-07-29
  • 二.Linux博客-2016年7月21日screen、echo

    格式说明: 操作 概念 命令 说明及举例 二.screen、echo internet 因特网ethernet 以太网ctrl+alt+F1 图形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 关机 reboot&n…

    Linux干货 2016-08-24
  • vim编辑器基本应用

    vi:Visual  Tnterface文本编辑器 vim:vi Improved vi的加强版 文本编辑种类:   行编辑器:sed   全屏编辑器:nano,vi,vim 其他编辑器::   gedit:一个简单的图形编辑器   gvim:一个vim编辑器的图形版本 vim使用格式 +# :打开文件后,直…

    Linux干货 2016-08-11

评论列表(1条)

  • All well
    All well 2017-03-19 16:54

    写的不错哦,盼盼,很地道,全面,点个赞