ansible可递归地从目录中查找最新文件

ansible可递归地从目录中查找最新文件,ansible,Ansible,我有一个要求,其中我需要递归搜索某个目录中的某些文件。然后在每个匹配的子目录中,只需获取最新的文件 假设这是一个目录结构: 现在,正如您所看到的,我突出显示了两个子目录A和B中最新的*.txt文件,而C没有 下面的代码将从子目录中获取所有*.txt文件。我就是不知道如何使用Ansible和shell脚本只获取最新的文件 -name:Ansible查找文件示例 查找: 路径:“/home/sarah/demo/” 模式:“*txt” 递归:是的 寄存器:匹配的文件 -名称:获取最新文件 设定事实

我有一个要求,其中我需要递归搜索某个目录中的某些文件。然后在每个匹配的子目录中,只需获取最新的文件

假设这是一个目录结构:

现在,正如您所看到的,我突出显示了两个子目录
A
B
中最新的
*.txt
文件,而
C
没有

下面的代码将从子目录中获取所有
*.txt
文件。我就是不知道如何使用Ansible和shell脚本只获取最新的文件

-name:Ansible查找文件示例
查找:
路径:“/home/sarah/demo/”
模式:“*txt”
递归:是的
寄存器:匹配的文件
-名称:获取最新文件
设定事实:
最新的_文件:“{files_matched.files | sort(attribute='mtime',reverse=true)}”
-调试:
msg:“{{item}}”
带有|项:{{latest|u file | map(attribute='path')| list}}”

任何帮助都将不胜感激。

您可以为此创建一个列表,其中的条件基于列表中已有内容的和
dirname
(感谢过滤器的帮助)

在剧本中:

-主机:所有
收集事实:不
任务:
-查找:
路径:/home/sarah/demo
模式:“*.txt”
递归:是的
寄存器:匹配的文件
-设定事实:
最新的_文件:{{最新的_文件|默认值([])+[item.path]}”
循环:{{files\u matched.files}排序(attribute='mtime',reverse=true)}
当:“item.path | dirname不在最新的| u文件中|默认值([])|映射('dirname')”
## 
#loop_控件仅用于验证目的
##
回路控制:
标签:{{Y-%m-%d%H:%m:%S'| strftime(item.mtime)}}{{item.path}
-调试:
var:最新的文件
这让我概括一下:

播放[全部]********************************************************************************************************
任务[查找]*******************************************************************************************************
确定:[本地主机]
任务[设置事实]***************************************************************************************************
确定:[localhost]=>(item=2021-03-15 14:07:10/home/sarah/demo/B/b1.txt)
确定:[localhost]=>(item=2021-03-15 14:06:16/home/sarah/demo/A/a2.txt)
跳过:[localhost]=>(item=2021-03-15 14:06:05/home/sarah/demo/B/B.txt)
跳过:[localhost]=>(item=2021-03-15 14:05:46/home/sarah/demo/A/A.txt)
跳过:[localhost]=>(item=2021-03-15 14:05:38/home/sarah/demo/A/a1.txt)
任务[调试]******************************************************************************************************
确定:[本地主机]=>
最新的文件:
-/home/sarah/demo/B/b1.txt
-/home/sarah/demo/A/a2.txt
重演********************************************************************************************************
localhost:确定=3更改=0无法访问=0失败=0跳过=0获救=0忽略=0
所有这些都将复制您的文件结构:

A:
总数0
-rw-r--r--1根根目录0 Mar 15 14:05 a.txt
-rw-r--r--1根根目录0 Mar 15 14:05 a1.txt
-rw-r--r--1根根目录0 Mar 15 14:06 a2.txt
B:
总数0
-rw-r--r--1根根目录0 Mar 15 14:06 b.txt
-rw-r--r--1根根目录0 Mar 15 14:07 b1.txt
C:
总数0

Hi@β.εηοτ.βε非常感谢。这真是太棒了,在完成了一门基本的Ansible课程后,我认为我几乎可以完成所有的任务。很明显,我需要专注于Jinja2编程。你能推荐一些课程来掌握ansible的这一部分吗?整个Jinja文档都放在这一页上:ansible构建了一系列额外的Jinja功能(测试、过滤器等等),你可以在那里阅读:。β。εηοιτ。βε:非常感谢。我希望我能用语言更好地表达自己。