What you'll learn
- How to Delete Only Files Inside a Directory with Ansible?
- Ansible How to Delete Only Files Inside a Directory
- Parameters
- Links
- code
- execution
- before execution
- after execution
- Conclusion
- Delete All Files in Directory
How to Delete Only Files Inside a Directory with Ansible?
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] ****************************************************************************
ok: [demo.example.com]
TASK [collect files] ******************************************************************************
ok: [demo.example.com]
TASK [remove collected files and directories] *****************************************************
changed: [demo.example.com] => (item={'path': '/home/devops/example/file1.txt', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 1001, 'gid': 10, 'size': 0, 'inode': 484310, 'dev': 64768, 'nlink': 1, 'atime': 1652197335.6893907, 'mtime': 1652197335.6893907, 'ctime': 1652197335.6893907, 'gr_name': 'wheel', 'pw_name': '