Loading...

Watch: How to Delete Only Files Inside a Directory - Ansible module find

How to automate the search and delete of the files and directories inside a directory keeping the main folder with Ansible modules find and file.

How to Delete Only Files Inside a Directory with Ansible?

I'm going to show you a live Playbook with some simple Ansible code.

I'm Luca Berton and welcome to today's episode of Ansible Pilot.

Ansible How to Delete Only Files Inside a Directory

  • ansible.builtin.find
  • Return a list of files based on specific criteria

Today we're talking about the Ansible module find.

The full name is ansible.builtin.find, which means that is part of the collection included in the ansible-core builtin collection.

This module returns a list of files based on specific criteria using the find popular Unix command.

Parameters

  • paths string - List of paths of directories to search
  • hidden boolean - no/yes
  • recurse boolean - recursively descend into the directory looking for files
  • file_type string - file/directory/any/link

The most important parameters of the find module for this use case.

The mandatory parameter paths specify the list of paths of directories to search.

You could include hidden files with the hidden parameter.

As well as recurse in any directory under the main path with the recurse parameter.

Another useful parameter is file_type, defaults to file but you could filter for directory, link or any filesystem object type.

Links

  • [ansible.builtin.find](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/find_module.html)
  • [ansible.builtin.file](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_module.html)

## Playbook

How to delete Ooly files inside a directory with Ansible Playbook.

I'm going to delete only the files and directories under the example folder of my login user (devops).

code

``yaml

---

  • name: delete file(s) in dir Playbook

hosts: all

vars:

mypath: "/home/devops/example"

tasks:

- name: collect files

ansible.builtin.find:

paths: "{{ mypath }}"

hidden: true

recurse: true

file_type: any

register: collected_files

- name: remove collected files

ansible.builtin.file:

path: "{{ item.path }}"

state: absent

with_items: "{{ collected_files }}"

`

execution

``bash

$ ansible-playbook -i virtualmachines/demo/inventory delete\ file\ or\ directory/file_onlyfiles.yml

PLAY [delete file(s) in dir Playbook] *

TASK [Gathering Facts] *

Read the full tutorial: How to Delete Only Files Inside a Directory - Ansible module find