在ansible中,我需要从符合特定命名标准的文件夹中删除文件:例如以abc开头的所有文件和文件夹
想要删除/ abc *。*
我使用以下任务删除所有文件:
- name: Removes all files
file:
path: "<folder path>/root/"
state: absent
但是我需要能够在这里指定一个标准,只删除那些名称以abc - *开头的文件和文件夹。
我已经尝试过使用:
- name: Removes files that start with abc
file:
path: "{{item}}"
state: absent
with_fileglob:
- <path>/abc*
但这与任何文件/文件夹都不匹配。
我也尝试过:
- name: Finds files and folders
find:
paths: "<path>/"
patterns: "abc*"
recurse: yes
register: result
- name: Removes files and folders
file:
path: "{{item.path}}"
state: absent
with_items: '{{result.files}}'
这也不会返回任何文件或文件夹。
答案 0 :(得分:1)
with_fileglob
在控制主机上运行,而不是在远程主机上运行。您的find
遗失use_regex
。
使用find
模块(首选)
- name: Finds files and folders
find:
paths: "<path>/"
patterns: "abc*"
recurse: yes
use_regex: yes
register: result
- name: Removes files and folders
file:
path: "{{item.path}}"
state: absent
with_items: '{{result.files}}'
使用shell
模块的解决方案
tasks:
- name: Lists files and folders
shell: find <your-path>
register: matched_files_dirs
- name: Removes files and folders
file: path="{{item}}" state=absent
with_items: matched_files_dirs.stdout_lines