这就是我想出的:
- 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
to any
,所以我们不会错过嵌套的目录和链接
hidden
to 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
如果你愿意,你也可以添加。