find

基本语法(Synopsis)

find [PATH ...] [EXPRESSION]

[] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。

基本功能与推荐用法

find 按路径、文件类型、名称、时间、大小等条件递归搜索文件系统,并可对结果执行操作。

find . -type f -name '*.md'
find . -type f -mtime -7
find . -type f -size +100M -print
find . -type d -empty -print
find . -type f -name '*.log' -exec wc -l -- {} \;
find . -type f -name '*.tmp' -print     # 删除前先预览

推荐:

  • 把搜索起点放在表达式之前,并用引号保护 *.md 等 glob,避免被 Shell 提前展开。
  • 单个文件操作优先使用 -exec ... {} \;;批量传参可使用 -exec ... {} +。
  • 需要把任意文件名安全传给其他命令时,使用 -print0 并交给 xargs 的 -0。

find -delete 等操作不可恢复。先使用完全相同的条件配合 -print 检查结果。

示例中的选项、参数与子命令

本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。

语法元素含义
PATH搜索起点;示例中的 . 表示当前目录。
-type f只匹配普通文件。
-type d只匹配目录。
-name GLOB按文件名 glob 匹配;通常应给 GLOB 加引号。
-mtime -7匹配最近 7 个 24 小时内修改的条目。
-size +100M匹配大于 100 MiB 的条目。
-empty匹配空文件或空目录。
-print输出匹配路径。
-exec COMMAND {} \;为每个结果执行一次 COMMAND,{} 代表当前路径。
wc -l -- FILE统计文件的换行符数量;-- 结束 wc 的选项解析。

官方资料