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

相关推荐

  • 计算机的组成及Linux简单介绍

    马哥教育网络班22期第一周练习 计算机概述 进入计算机的世界 计算机 计算机(computer)俗称电脑,是能够按照程序运行,自动、高速出炉海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,计算机的组成遵循冯诺依曼体系。可分为超级计算机、工业控制计算机、网络计算机、个人计算机和嵌入式计算机等五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。…

    Linux干货 2016-08-14
  • linux系统启动之破坏与修复

    linux系统启动之破坏与修复:      通过这些实验,了解linux启动流程和相关文件,同时也预防系统发生问题能更快解决,而不用重装或者耽误时间:      实验:破坏MBR 446     dd if=/dev/zero of=/dev/sda bs=1 count=446…

    Linux干货 2017-03-30
  • sed大法好

    sed sed概念 (1)基本概念:sed是流编辑器(stream editor),A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).作用就是对输入的流(文件或者从一个管道输入的流…

    Linux干货 2016-12-02
  • 第一周-Linux Basic

        本文主要介绍了计算机的组成及功能、Linux的发行版、Linux哲学思想、一些基本命令、命令帮助的获取、文件系统层级结构标准。 一、计算机的组成及功能     计算机由硬件和软件两大类组成     硬件   &n…

    Linux干货 2016-11-28
  • RPM与YUM命令异同详解

    RPM和YUM都是用来安装程序的工具,但是它们有太多相似的用法以至于有事很难分清应该哪个那就来一起详细的了解一下他们的功能及用法,以及他们的相同以及不同之处。 RPM 软件包管理器功能:安装,卸载,升级,查询,校验,打包,数据库管理RPM在安装时不能处理程序之间复杂的依赖关系RPM可以验证软件包来源的合法性、完整性。常用选项: -i:表示安装。(常用:-iv…

    2017-06-18
  • 文件查找命令(find、locate)

    在文件系统上查找符合条件的文件: 实现工具:locate, find locate: 依赖于事先构建好的索引库; 系统自动实现(周期性任务); 手动更新数据库(updatedb); 工作特性: 查找速度快; 模糊查找; 非实时查找; locate [OPTION]… PATTERN… -b:只匹配路径中的基名; -c:统计出共有多少个符合条件的文件;…

    Linux干货 2016-11-06

评论列表(1条)

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

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