Вот что я придумала:
- name: Get directory listing
find:
path: "{{ directory }}"
file_type: any
hidden: yes
register: directory_content_result
- name: Remove directory content
file:
path: "{{ item.path }}"
state: absent
with_items: "{{ directory_content_result.files }}"
loop_control:
label: "{{ item.path }}"
Во-первых, мы получаем список каталогов с find
настройкой
file_type
чтобы any
, таким образом , мы бы не пропустить вложенные каталоги и ссылки
hidden
в yes
, таким образом , мы не пропустить скрытые файлы
- Кроме того, не устанавливайте
recurse
в yes
, так как это не только не нужно, но может увеличить время выполнения.
Затем мы проходим этот список с помощью file
модуля. Его вывод немного многословен, поэтому loop_control.label
поможет нам с ограничением вывода (наш совет был здесь ).
Но я обнаружил, что предыдущее решение было несколько медленным, поскольку оно перебирает содержимое, поэтому я пошел с:
- name: Get directory stats
stat:
path: "{{ directory }}"
register: directory_stat
- name: Delete directory
file:
path: "{{ directory }}"
state: absent
- name: Create directory
file:
path: "{{ directory }}"
state: directory
owner: "{{ directory_stat.stat.pw_name }}"
group: "{{ directory_stat.stat.gr_name }}"
mode: "{{ directory_stat.stat.mode }}"
- получить свойства каталога с помощью
stat
- удалить каталог
- воссоздать каталог с такими же свойствами.
Этого было достаточно для меня, но вы также можете добавить attributes
, если хотите.