我尝试使用shell删除旧的备份目录,而只保留最新的n
备份,而不是使用Ansible command或find module模块。目前,我使用以下代码获取所有备份目录的列表(以便在第二步中我可以删除不需要的目录):
- find:
paths: "/opt/"
patterns: "backup_*"
file_type: "directory"
不幸的是,我没有看到任何缩小目标结果列表的方法......
n
个元素并删除所有其他元素?是否有人成功将find模块用于类似用途?</ p>
答案 0 :(得分:1)
您可以使用sort
过滤器
您可以使用[:N]
语法对列表中的前N个元素执行任务。
- find:
path: "/tmp/"
pattern: "file*"
register: my_files
- debug: msg="{{(my_files.files | sort(attribute='ctime'))[:-3] | map(attribute='path') | list }}"
按ctime
对文件进行排序,除最后三个元素外,只取path
个属性并形成一个列表。