从目录中获取文件名列表
Get list of file names from directory
我试图从机器上的目录中获取文件列表 运行 ansible,但没有完整的文件路径直到文件名。
到目前为止,我有
managed_files: "{{ lookup('fileglob', '../rules/*', wantlist=True) }}
这将 return 规则目录中的文件列表,但包含文件的完整路径,例如。 /path/to/rules/rule1.yml
,当我只想要rule1.yml
.
我想做这样的事情:
managed_files: "{{ lookup('fileglob', '../rules/*', wantlist=True) | basename | list }}"
但这给出了一个错误,即 basename
需要一个类似路径的字符串,而不是一个列表。
这样做的正确方法是什么?
使用 map
对列表的所有元素应用 basename
过滤器:
managed_files: >-
{{
lookup('fileglob', '../rules/*', wantlist=True)
| map('basename')
| list
}}
鉴于任务:
- debug:
msg: >-
{{
lookup('fileglob', '../rules/*', wantlist=True)
| map('basename')
| list
}}
这产生:
TASK [debug] *************************************************************
ok: [localhost] =>
msg:
- rule3.yml
- rule1.yml
- rule2.yml
我试图从机器上的目录中获取文件列表 运行 ansible,但没有完整的文件路径直到文件名。
到目前为止,我有
managed_files: "{{ lookup('fileglob', '../rules/*', wantlist=True) }}
这将 return 规则目录中的文件列表,但包含文件的完整路径,例如。 /path/to/rules/rule1.yml
,当我只想要rule1.yml
.
我想做这样的事情:
managed_files: "{{ lookup('fileglob', '../rules/*', wantlist=True) | basename | list }}"
但这给出了一个错误,即 basename
需要一个类似路径的字符串,而不是一个列表。
这样做的正确方法是什么?
使用 map
对列表的所有元素应用 basename
过滤器:
managed_files: >-
{{
lookup('fileglob', '../rules/*', wantlist=True)
| map('basename')
| list
}}
鉴于任务:
- debug:
msg: >-
{{
lookup('fileglob', '../rules/*', wantlist=True)
| map('basename')
| list
}}
这产生:
TASK [debug] *************************************************************
ok: [localhost] =>
msg:
- rule3.yml
- rule1.yml
- rule2.yml