如何从Ansible win_find模块返回值中仅输出文件的完整绝对路径?
方案1:通过循环控制逐行输出路径
该方案可以完全匹配你需要的单行输出格式,解决默认打印全量返回值的问题:
- name: 递归查找C:\Downloads下的文件 win_find: paths: C:\Downloads recurse: yes register: dwnlds_list - name: 仅输出查找到的文件路径 debug: msg: "{{ item.path }}" loop: "{{ dwnlds_list.files }}" loop_control: label: "{{ item.path }}"
你之前得到全量返回值的原因是Ansible循环默认会把整个item对象作为日志标签输出,新增loop_control配置后会限制循环标签仅展示路径,不会输出文件的大小、修改时间等其他元信息。
方案2:一次性提取所有路径输出
如果不需要逐行处理,仅需要拿到完整的路径列表,可以用map过滤器直接批量提取属性,写法更简洁:
- name: 递归查找C:\Downloads下的文件 win_find: paths: C:\Downloads recurse: yes register: dwnlds_list - name: 输出所有文件路径列表 debug: msg: "{{ dwnlds_list.files | map(attribute='path') | list }}"
内容的提问来源于stack exchange,提问作者Brian G
相关产品推荐
相关产品推荐

