我有一個文件列表。我想遍歷只提取新列表變量路徑的文件列表。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。 –