那就是我想出的:
- 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
如果需要,您也可以添加。