获取Ansible目录中的最新文件名

J. *_*Doe 10 ansible

我有一个Ansible脚本,我试图获取目录中最新项目的文件名.我正在使用这个Ansible脚本:

- name: Finding newest file in a folder
  find:
    paths: "/var/www/html/wwwroot/somefolder/"
    age: "latest"
    age_stamp: mtime
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误 -

FAILED! => {"age": "latest", "changed": false, "failed": true, "msg": "failed to process age"}
Run Code Online (Sandbox Code Playgroud)

如何让Ansible检索目录中最新文件的文件名?

Kon*_*rov 26

Pure Ansible解决方案:

- name: Get files in a folder
  find:
    paths: "/var/www/html/wwwroot/somefolder/"
  register: found_files

- name: Get latest file
  set_fact:
    latest_file: "{{ found_files.files | sort(attribute='mtime',reverse=true) | first }}"
Run Code Online (Sandbox Code Playgroud)

  • 注意:要获取文件路径结果,请使用 ```latest_file: "{{ (found_files.files|sort(attribute='mtime')|last).path }}" ``` 否则你会得到一个 dict一个结果。 (8认同)
  • 最后一行比较漂亮:`latest_file:"{{found_files.files | sort(attribute ='mtime')| last}}"` (5认同)