如何使用Ansible获取模式匹配文件夹的列表



Ansible查找模块没有列出匹配模式。这是我的目录结构

path: /home/ryan/ws
.
|___file1.txt
|___file2.yaml
|___file3.jar
|___service1
| |___1.0.7.0
|   |___service1_1.0.7.0.jar
| |___1.0.19.0
|   |___service1_1.0.19.0.jar
| |___1.0.123.0
|   |___service1_1.0.123.0.jar
|____service2
| |___1.0.23.0
|   |___service2_1.0.23.0.jar
| |___1.0.9.0
|   |___service2_1.0.9.0.jar
| |___1.0.143.0
|   |___service2_1.0.143.0.jar
|____service3
| |___1.0.2.0
|   |___service3_1.0.2.0.jar
| |___1.0.4.0
|   |___service3_1.0.4.0.jar
| |___1.0.13.0
|   |___service3_1.0.13.0.jar

就像明智的一样,我有很多文件夹近20个服务。因此,我想列出每个服务中的所有目录。

这是我正在尝试的

- hosts: myserver
  become: true
  become_user: myuser
  vars:
    workspace_path: /home/ryan/ws
tasks:
- name: find folders from location
  find:
    paths: "{{ workspace_path }}/{{ item }}"
    file_type: directory
    patterns: "1.0.*.0/"
    recurse: yes
    use_regex: yes
  with_items:
    - service1                         
    - service2               
    - service3         
    - app1
    - app2 
  register: files_to_delete
- debug: var=files_to_delete

有人可以给我更好的方法来单独列出文件夹吗?

在您的图案中不包含路径分离器。它应该阅读

patterns: "1.0.*.0"

捕获是在'*'之前'。就像在foo中一样。*bar这是一个示例:https://gist.github.com/vpnwall-services/5e5e5cc8c11384d6e42e42e1760b73471c620