可用 find 的 -name 配合 -o 实现多模式匹配,需用 \( ... \) 括起条件并注意空格、转义和引号;-iname 支持忽略大小写;常与 -type f、-mtime 等组合使用。

可以用 find 的 -name 配合逻辑运算符 -o(or)实现一行命令匹配多个文件名模式,但要注意括号和转义。
用 -o 连接多个 -name 条件
每个 -name 需单独写,并用 -o 连接;为避免优先级问题,必须用 \( ... \) 将整个条件括起来(注意反斜杠转义):
find /path -type f \( -name "*.log" -o -name "*.tmp" -o -name "core" \)- 匹配
/path下所有普通文件,扩展名是.log或.tmp,或文件名恰好是core
区分大小写与忽略大小写
-name 区分大小写,如需不区分,换用 -iname:
find . \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \)- 这样能同时匹配
photo.JPG、IMG.JPEG等变体
组合其他条件更实用
常配合 -type f(只查文件)、-mtime(按修改时间过滤)等:
find /var/log -type f \( -name "*.log" -o -name "*.out" \) -mtime -7- 找最近 7 天内修改过的日志类文件
- 注意:
-o优先级低于-and(默认隐含),所以-type f会作用于整个括号内条件
避免常见错误
容易出错的地方:
- 漏写反斜杠:
( ... )必须写成\( ... \),否则 shell 会报错或行为异常 - 空格不能省:
-name "*.txt"-o-name "*.md"是错的,-o前后必须有空格 - 引号包裹通配符:用
"*.py"而不是*.py,防止 shell 提前展开

















