如何将Ansible stat模块的mtime输出转换为YYMMDD-HHMMSS格式
解决Ansible stat模块文件修改时间格式转换问题
你完全不需要切换到shell模块,Ansible自带的strftime过滤器就能轻松实现这个需求,直接把stat返回的Epoch时间戳转换成你需要的YYMMDD-HHMMSS格式。
完整可运行的Playbook示例
- name: 获取并格式化文件最后修改时间 hosts: your_target_hosts tasks: - name: 统计目标文件状态 stat: path: /path/to/file register: file_stat_result - name: 输出格式化后的修改时间 debug: msg: "{{ '%y%m%d-%H%M%S' | strftime(file_stat_result.stat.mtime) }}"
关键说明
- 这里使用的
strftime过滤器是Ansible对Python标准库strftime的封装,支持所有标准时间格式化指令 - 格式化字符串
%y%m%d-%H%M%S中:%y:两位年份(比如2021年返回21)%m:两位月份(01-12)%d:两位日期(01-31)%H:24小时制的小时(00-23)%M:两位分钟(00-59)%S:两位秒数(00-59)
- 注意:过滤器的使用顺序很重要——先写格式化字符串,再通过
| strftime传入时间戳,这个顺序不能颠倒,这可能是你之前尝试失败的原因 - stat模块返回的
file_stat_result.stat.mtime是原生的数值型Epoch时间戳,不需要额外的类型转换,直接传给过滤器即可
内容的提问来源于stack exchange,提问作者dkd6
相关产品推荐
相关产品推荐

