我有一个文件列表。我想遍历只提取新列表变量路径的文件列表。Ansible修改列表元素
这给了我,我的文件列表:
- name: sweep directory /foo/bar recursivly
find:
paths: /foo/bar
recurse: yes
patterns: "*"
hidden: True
register: sweep_result
- name: build file list
set_fact:
all_list: "{{ sweep_result.files | map(attribute='path') | list }}"
- debug: var=all_list
输出:
TASK [debug] *************************************************
ok: [host] => {
"all_list": [
"/foo/bar/.hiddenfile",
"/foo/bar/file1",
"/foo/bar/folder/file1",
"/foo/bar/folder/file2.ext",
]
}
这是我想要的一个例子:
"paths": [
"/foo/bar/",
"/foo/bar/folder/",
]
我可以看到,循环访问像这样的all_list在每个元素上工作,剥离文件和扩展名,只留下一条路径。我不知道如何做类似的事情,在这个过程中建立一个新的列表变量。
- debug: var=item[:item.rfind('/')]
with_items:
- "{{ all_list }}"
对列表进行迭代可能会给我重复的路径。使用'独特'过滤器可以解决这个问题。我确信有一个适当的忍者风格过滤器可以让我获得我之后的结果。谢谢你的帮助。
完美。它有助于阅读文档!谢谢RussStarr和MrName。 –