我在迭代输出并将其注册到变量时遇到问题。我需要获取目录中的所有xml文件路径。
脚本:
---
- hosts: "{{ host }}"
gather_facts: false
tasks:
- name: Find xml files
win_find:
paths: C:\Directory
patterns: ['*.xml']
register: filesfind
- name: set facts
set_fact:
find: "{{ filesfind.files.0.path }}"
输出:
ok: [host] => {
"changed": false,
"examined": 17,
"files": [
{
"attributes": "Archive",
"checksum": "dd1f259408cf08a40da492238101344824199594",
"creationtime": 1586955271.1427224,
"extension": ".xml",
"filename": "File1.xml",
"isarchive": true,
"isdir": false,
"ishidden": false,
"islnk": false,
"isreadonly": false,
"isshared": false,
"lastaccesstime": 1586955271.1427224,
"lastwritetime": 1586867409.3292916,
"owner": "BUILTIN\\Administrators",
"path": "C:\\Directory\\File1.xml",
"size": 218428
},
{
"attributes": "Archive",
"checksum": "dd1f259408cf08a40da492238101344824199594",
"creationtime": 1586867369.8255088,
"extension": ".xml",
"filename": "File2.xml",
"isarchive": true,
"isdir": false,
"ishidden": false,
"islnk": false,
"isreadonly": false,
"isshared": false,
"lastaccesstime": 1586867369.8255088,
"lastwritetime": 1586867409.3292916,
"owner": "BUILTIN\\Administrators",
"path": "C:\\Directory\\File2.xml",
"size": 218428
}
],
"matched": 2
它仅注册我在剧本中定义的文件[0] .path。如何遍历所有列表索引或项目并将所有路径放入一个变量?
过滤器“地图”完成了工作。下面的任务
- set_fact:
myfind: "{{ filesfind.files|map(attribute='path')|list }}"
- debug:
var: myfind
给予
"myfind": [
"C:\\Directory\\File1.xml",
"C:\\Directory\\File2.xml"
]