ansible find (-or linux) 用于设置深度的目录
ansible find (-or linux) for directories with set depth
我正在尝试使用内置的 Ansible find
创建类似于
的东西
find /home/user/data -maxdepth 2 -type d -name 'mul' -or -name 'sqr'
其中 /home/user/data
有文件夹 a
、b
、c
...并且每个文件夹中可能是 none/one/both 个 mul
- 或 sqr
-目录。
它与 Linux 查询以及我尝试过的 Ansible 配合得很好
- name: find fields
find:
depth: 2
paths: "/home/user/data"
file_type: directory
patterns:
- 'mul'
- 'sqr'
register: fields
- name: debug1
debug:
msg: " myitem: {{ item }}"
loop: "{{ fields.files | map(attribute='path') }}"
但是我的调试输出是空的。
我可以删除 patterns
并设置 depth: 1
,得到一个列表 a
、b
、c
,然后遍历这些以找到 mul
和 sqr
但如果列表变长,这会花费不必要的时间。
正如 Vladimir 所说,设置 recurse: yes
可以解决问题。
我仍然想知道,为什么在设置 depth: 2
时,不暗示 recurse: yes
。
这是完整的例子:
- name: find fields
find:
depth: 2
paths: "/home/user/data"
file_type: directory
recurse: yes
patterns:
- 'mul'
- 'sqr'
register: fields
- name: debug1
debug:
msg: " myitem: {{ item }}"
loop: "{{ fields.files | map(attribute='path') }}"
我正在尝试使用内置的 Ansible find
创建类似于
find /home/user/data -maxdepth 2 -type d -name 'mul' -or -name 'sqr'
其中 /home/user/data
有文件夹 a
、b
、c
...并且每个文件夹中可能是 none/one/both 个 mul
- 或 sqr
-目录。
它与 Linux 查询以及我尝试过的 Ansible 配合得很好
- name: find fields
find:
depth: 2
paths: "/home/user/data"
file_type: directory
patterns:
- 'mul'
- 'sqr'
register: fields
- name: debug1
debug:
msg: " myitem: {{ item }}"
loop: "{{ fields.files | map(attribute='path') }}"
但是我的调试输出是空的。
我可以删除 patterns
并设置 depth: 1
,得到一个列表 a
、b
、c
,然后遍历这些以找到 mul
和 sqr
但如果列表变长,这会花费不必要的时间。
正如 Vladimir 所说,设置 recurse: yes
可以解决问题。
我仍然想知道,为什么在设置 depth: 2
时,不暗示 recurse: yes
。
这是完整的例子:
- name: find fields
find:
depth: 2
paths: "/home/user/data"
file_type: directory
recurse: yes
patterns:
- 'mul'
- 'sqr'
register: fields
- name: debug1
debug:
msg: " myitem: {{ item }}"
loop: "{{ fields.files | map(attribute='path') }}"