删除与ansible中特定命名条件匹配的文件

时间:2016-11-21 12:48:30

标签: ansible

在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}}' 

这也不会返回任何文件或文件夹。

1 个答案:

答案 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