语法

find path -option [ -print ] [ -exec -ok command ] {} \;

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

起始路径:默认是当前路径
查找条件:根据文件名、大小、类型、从属关系、权限等查找
处理动作:默认是 print 输出,可以指定删除等操作

示例

  1. -- 找出/tmp目录下属主为非root的所有文件
  2. find /etc -not -user root -ls
  3. # 文件大于1M的普通文件
  4. find /etc -size +1M -a -type f
  5. # 最近一周被修改过
  6. find /usr -mtime 7
  7. # 最近一周被修改过 且 不是 root 和 bae 用户
  8. find /usr -mtime 7 -a -not -user root -a ! -user bae
  9. # 没有属和组,且最近一周被访问过的文件和目录
  10. find / -nouser -o -nogroup -a -atime 7

option

通过名称查找

  • -name
  • -iname 忽略大小写

find . -name a.php
find . -name “*.php”

递归查找

-depth n n 为子目录层级,默认已开启且不限制

正则路径

  • -regex pattern

文件大小

大小 单位 的重要性 #-1 1024M-1 和1G-1 是不同的 +# 大余 (#,-∞) -# 小于 [0,#-1] # 等于 在 #-1 到# 之间的文件(#-1,#]

通过文件类型

  • -type

类型列表:
f: 普通文件
d: 目录文件
l:符号链接文件
b:块设备 文件
c:字符设备文件
p:管道文件
s:套接字文件

通过创建日期

  • ctime n 过去 n 天被创建过的文件
  • cmin n 过去 n 分钟被创建过的文件

时间 单位:天 -atime -ctime 表示过去 +# 大于 (#+1,-∞) -# [0,#) # [#,#+1]

通过修改日期

  • ctime n 过去 n 天被修改过的文件
  • cmin n 过去 n 分钟被修改过的文件

通过读取日期

  • atime n 过去 n 天被读取过的文件
  • amin n 过去 n 分钟被读取过的文件

从属关系

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

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

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

组合逻辑


与:-a, -and 默认组合逻辑;
或:-o, -or
非:-not, !

处理动作

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