我有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
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用Ansible中的模块find,但它返回一个未排序的列表.使用Ansible有一个简单的方法来实现这一目标吗?
Kon*_*rov 10
您可以使用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 }}"
Run Code Online (Sandbox Code Playgroud)
只需根据需要更改排序属性即可.
但要注意字符串排序不是数字,所以/releases/1.0.5将继续/releases/1.0.10.
有趣的解决方案,非常感谢你们。但我想我在Ubuntu 中找到了最简单的方法,只需使用ls -v /releases/即可对所有文件夹应用自然排序:
- name: List of releases in ascendent order
command: ls -v /releases/
register: releases
- debug: msg={{ releases.stdout_lines }}
Run Code Online (Sandbox Code Playgroud)
回应是:
ok: [my.remote.com] => {
"msg": [
"0.0.0",
"0.0.1",
"0.0.10",
"1.0.0",
"1.0.5",
"2.0.0"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12391 次 |
| 最近记录: |