linux 从Ansible行动手册中删除服务器所有目录中的特定文件夹/文件

t9aqgxwy  于 2023-01-12  发布在  Linux
关注(0)|答案(1)|浏览(201)

我想删除服务器子目录中的所有“测试”文件夹。下面是“测试”文件夹的路径。主文件夹中有多个目录,所以,我不能在剧本中指定所有路径。
路径:/home/*/test
我已经写了下面的剧本,但它不工作。

tasks:
   - name: Delete the folder
     file:
       path: "{{ item }}"
       state: absent
     with_items:
       - "/home/*/test"

你能告诉我解决这个问题的办法吗?
我试过使用file_glob,但是不起作用。我想从所有子目录中删除测试文件夹。

0mkxixxg

0mkxixxg1#

使用模块 find。例如,给定树

shell> tree /tmp/home/
/tmp/home/
├── a
├── b
│   └── test
└── c
    └── test

声明路径列表

test_dirs: "{{ out.files|map(attribute='path') }}"

然后,任务

- find:
        paths: /tmp/home
        file_type: directory
        patterns: test
        recurse: true
      register: out

给予

test_dirs:
  - /tmp/home/c/test
  - /tmp/home/b/test

使用列表删除目录

- file:
        path: "{{ item }}"
        state: absent
      loop: "{{ test_dirs }}"
shell> tree /tmp/home/
/tmp/home/
├── a
├── b
└── c

完整的测试行动手册示例

- hosts: localhost

  vars:

    test_dirs: "{{ out.files|map(attribute='path') }}"

  tasks:

    - find:
        paths: /tmp/home
        file_type: directory
        patterns: test
        recurse: true
      register: out
    - debug:
        var: test_dirs

    - file:
        path: "{{ item }}"
        state: absent
      loop: "{{ test_dirs }}"

相关问题