gpt4 book ai didi

Ansible修改列表元素

转载 作者:行者123 更新时间:2023-12-05 00:14:56 29 4
gpt4 key购买 nike

我有一个文件列表。我想遍历文件列表,仅提取新列表变量的路径。

这给了我我的文件列表:

- 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 }}"

遍历列表可能会给我重复的路径。使用“独特”过滤器可以解决这个问题。我确信有一个合适的 jinja 风格的过滤器可以让我得到我想要的结果。谢谢你的帮助。

最佳答案

也许使用 file_type: directory在查找模块中会起作用吗?

- name: sweep directory /tmp recursivly
find:
paths: /tmp
recurse: yes
patterns: "*"
hidden: True
file_type: directory
register: sweep_result

关于Ansible修改列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640196/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com