นั่นคือสิ่งที่ฉันเกิดขึ้นกับ:
- 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
เช่นกันหากคุณต้องการ