find程序递归向下遍历每个路径的目录树,对树中每个文件计算表达式。基本用法:

find [options] path [expression]

Operation

这里又一些常用选项:

选项 描述
-E 支持拓展的正则表达式,跟primaries中的`-regex`和`-iregex`一起使用。
-s 使`find`按字典序遍历文件结构。`find -s`和`find | sort`的结果可能不同。

Expression

Expression有primariesoperands两种。

PRIMARIES

带数字参数的primaries都可以在数字前加+-前缀。加号前缀表示超过n,减号前缀表示少于n,没有前缀表示恰好n

Primary 描述
-ctime n[smhdw] 比较文件状态信息最后修改时间和`find`查询开始时间。
-d n 如果文件相对于遍历起点的深度是n则返回true。
-empty 如果当前文件或目录是空则返回true。
-[i]name pattern 如果路径名最后一部分匹配pattern则返回true. 特殊匹配字符:[, ], *, ?
-[i]regex pattern 如果整个路径匹配正则表达式则返回true。
-type [bdflps] 如果文件是指定类型则返回true. b(block), d(目录), f(普通文件), l(符号链接), p(FIFO), s(socket)

OPERATORS

primaries可以由以下operators来组合使用:

Operator Description
( expression ) 如果括号内表达式为true则返回true.
! expression 如果expression为false则返回true
-not expression
expression -and expression 这是一个逻辑与操作。
expression -or expression 这是一个逻辑或操作。

例子

  • 找到超过7天没有修改过的所有文件:
    $ find /tmp/ -ctime +7d
    
  • 找到所有以1.txt结尾的文件:
    $ find . -regex '.*/*1.txt'
    
  • 找到所有以.txt结尾但不是符号链接的文件:
    $ find . -regex '.*/*.txt' -and -not -type l