开发者社区> 问答> 正文

在ansible中找到在最后一分钟内修改过的最新文件?

我有一个特定目录中的文件列表,如下所示:

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模块,但不确定如何使用该模块使上述功能正常工作?

展开
收起
祖安文状元 2020-01-07 14:28:03 503 0
1 条回答
写回答
取消 提交回答
  • 绝对是可能的,您甚至离解决方案也很近。

    正如你可能已经看到它做debug的你find已经,它的收益包含的列表files,这个列表也只是空的,如果你没有文件。

    因此,使用Jinja可以轻松查看列表何时为空

    - debug:
        msg: '{{ files.files if files.files|count > 0 else "cannot find any file" }}'
    
    

    此语法使用内联if以及count过滤器。

    关于您现在需要最新文件的事实,您还可以使用一组Jinja文件管理器:过滤器sort将帮助您按修改时间对文件进行排序,过滤器first将仅帮助您获取列表的第一个元素。

    2020-01-07 14:28:11
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
ANSIBLE在生产环境中的实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载