You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible find模块实现指定深度查找匹配名称的目录

问题解决办法

错误根因

  • 参数误用:你当前使用的depth参数是Ansible find模块定义的最小搜索深度,对应Linux find命令-maxdepth 2的参数应为max_depth
  • 匹配逻辑错误:默认配置下find模块的多个patterns是「同时满足」的AND逻辑,你需要的是匹配任意一个pattern的OR逻辑

正确配置示例

- name: find fields
  find:
    paths: "/home/user/data"
    max_depth: 2  # 对应原命令的-maxdepth 2,限制最大搜索深度为2层
    file_type: directory
    patterns: '^(mul|sqr)$'  # 用正则表达式实现OR匹配,匹配mul或者sqr的目录名
    use_regex: yes  # 开启正则匹配模式
  register: fields

- name: debug1
  debug:
    msg: " myitem: {{ item }}"
  loop: "{{ fields.files | map(attribute='path') }}"

补充说明

如果你不想开启正则匹配,也可以调整参数用通配符模式实现,但正则写法更贴合你原shell命令的匹配习惯,执行效率和遍历子目录的方案相比提升非常明显,适合子目录多的场景。

内容的提问来源于stack exchange,提问作者Joel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:54:00