我有OS X“ El capitan” 10.11.6,并且我正在使用Ansible 2.1.1.0在远程Linux服务器Ubuntu 16.04 Xenial上运行一些维护任务。我正在尝试整理以下文件夹列表,以便在需要时可以删除旧文件夹:

/releases/0.0.0
/releases/0.0.1
/releases/0.0.10
/releases/1.0.0
/releases/1.0.5
/releases/2.0.0


我一直在尝试使用Ansible中的模块find,但是它返回的列表未排序。有没有简单的方法可以通过Ansible实现这一目标?

最佳答案

您可以使用sort过滤器对项目进行排序:

- hosts: localhost
  gather_facts: no
  tasks:
    - find: path="/tmp" patterns="test*"
      register: files

    - debug: msg="{{ files.files | sort(attribute='ctime') | map(attribute='path') | list }}"


只需更改排序属性即可。
但是请注意,字符串排序不是数字,因此/releases/1.0.5将排在/releases/1.0.10之后。

07-24 13:06