我有一个特定目录中的文件列表,如下所示:
david@host:~/jobs/process/workspace/files$ ls -lrth
total 68K
-rw-r--r-- 1 david david 7.8K Oct 1 11:10 golden_proc.init.1569953435497
-rw-r--r-- 1 david david 7.7K Oct 2 12:11 golden_proc.init.1570043494149
-rw-r--r-- 1 david david 7.7K Oct 2 20:15 golden_proc.init.1570072510929
每个文件名都以时间戳结尾。现在,我需要找到一个最新的文件,该文件在ansible的一分钟前被修改或创建。
如果没有这样的文件,则可以通过登录“找不到任何文件”从ansible成功返回。 如果有这样的文件,则将该文件复制到“ / tmp”文件夹。 如果在最后一分钟生成或修改了多个文件,请使用最新的文件。 这有可能做到吗?我看到在ansible中有一个find模块,但不确定如何使用该模块使上述功能正常工作?
绝对是可能的,您甚至离解决方案也很近。
正如你可能已经看到它做debug的你find已经,它的收益包含的列表files,这个列表也只是空的,如果你没有文件。
因此,使用Jinja可以轻松查看列表何时为空
- debug:
msg: '{{ files.files if files.files|count > 0 else "cannot find any file" }}'
此语法使用内联if以及count过滤器。
关于您现在需要最新文件的事实,您还可以使用一组Jinja文件管理器:过滤器sort将帮助您按修改时间对文件进行排序,过滤器first将仅帮助您获取列表的第一个元素。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。