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

如何用Ansible获取匹配模式文件夹列表?find模块匹配失效求助

使用Ansible Find模块获取匹配模式的文件夹列表

针对你的目录结构,我来帮你解决用Ansible find模块获取指定模式文件夹的问题,分几种常见场景给你实操示例:

场景1:获取/home/ryan/ws下所有以service开头的一级目录

如果要拿到service1、service2、service3这些目录,playbook可以这么写:

- name: 查找service开头的一级目录
  hosts: localhost
  tasks:
    - name: 获取service文件夹列表
      ansible.builtin.find:
        path: /home/ryan/ws
        file_type: directory  # 明确指定只搜索文件夹
        patterns: "service*"  # 匹配以service开头的目录名称
        recurse: no  # 不递归,仅查找当前路径下的一级目录
      register: service_dirs

    - name: 输出找到的service目录
      ansible.builtin.debug:
        msg: "{{ item.path }}"
      loop: "{{ service_dirs.files }}"

场景2:递归获取所有符合版本号格式的子目录

如果要拿到每个service下类似1.0.7.0、1.0.19.0这种x.x.x.x格式的版本目录,需要启用正则匹配:

- name: 查找所有版本号格式的子目录
  hosts: localhost
  tasks:
    - name: 获取版本文件夹列表
      ansible.builtin.find:
        path: /home/ryan/ws
        file_type: directory
        use_regex: yes  # 开启正则匹配模式
        regex: "^\\d+\\.\\d+\\.\\d+\\.\\d+$"  # 匹配x.x.x.x格式的版本号(YAML中需双转义反斜杠)
        recurse: yes  # 递归查找所有子目录
      register: version_dirs

    - name: 输出找到的版本目录
      ansible.builtin.debug:
        msg: "{{ item.path }}"
      loop: "{{ version_dirs.files }}"

你可能踩过的坑排查

如果之前用find模块没成功,大概率是这几个原因:

  • 未指定file_type: directory:默认find会搜索所有文件类型(含文件和文件夹),如果你的模式同时匹配了文件,就会导致结果混乱或目标文件夹未被筛选
  • 正则匹配未开use_regex: yes:如果用了正则表达式作为匹配规则,必须开启这个参数,否则Ansible会把它当成普通通配符处理
  • 递归设置错误:如果要找子目录却忘了开recurse: yes,只会搜索指定路径的一级目录
  • 模式写法错误:比如用了正则语法却没开正则模式,或者YAML中正则的反斜杠未双转义导致匹配失效

扩展:仅获取单个service下的版本目录

如果只想拿service1下的版本目录,可以直接把路径指向service1,再配合正则匹配:

- name: 查找service1下的版本目录
  hosts: localhost
  tasks:
    - name: 获取service1的版本列表
      ansible.builtin.find:
        path: /home/ryan/ws/service1
        file_type: directory
        use_regex: yes
        regex: "^\\d+\\.\\d+\\.\\d+\\.\\d+$"
        recurse: no  # 版本目录是service1的直接子目录,无需递归
      register: service1_versions

    - name: 输出service1的版本目录
      ansible.builtin.debug:
        msg: "{{ item.path }}"
      loop: "{{ service1_versions.files }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:21:33