macos - 如何在 MacOS 上使用 ansible 获取文件创建时间?
问题描述
我试图在 MacOS 上的 ansible playbook 中列出一组目录及其创建时间。
我遇到的问题是文件和统计模块为您提供了文件的“ctime”,但在 MacOS 上,这是最后一次元数据更改的时间,而不是创建日期。
例如这个剧本:
- name: Get dirs and create dates
hosts: localhost
tasks:
- name: make a list of dirs
find:
paths:
- "/Users/me/Work/Customers"
file_type: directory
recurse: false
register: projectdirs
- name: Dump found paths
debug:
msg: "{{ shortname }} {{ date }}"
loop: "{{ projectdirs.files }}"
loop_control:
label: "{{ item.path }}"
vars:
shortname: "{{ item.path | basename }}"
date: "{{ '%Y-%m-%d' | strftime(item.ctime) }}"
这只是将今天的日期列为目录的“创建”日期。
ok: [localhost] => (item=/Users/me/Work/Customers/Base) => {
"msg": "basefarm 2021-08-23 1629699678.021843"
}
ok: [localhost] => (item=/Users/me/Work/Customers/Acme) => {
"msg": "Orange 2021-08-23 1629699678.5415485"
}
ok: [localhost] => (item=/Users/me/Work/Customers/Foo) => {
"msg": "VKB 2021-08-23 1629699679.0579438"
}
ok: [localhost] => (item=/Users/me/Work/Customers/Bar) => {
"msg": "LombardOdier 2021-08-23 1629699679.5856457"
}
...
我发现原因当然是ctime不是mac上的创建时间......
有没有解决的办法?我想要真正的创建日期,但 Ansible 的 stat 模块没有给我这个。创建日期是可用的,例如我可以得到它ls -ldU
。
那么我该如何解决呢?
解决方案
据我所知,如果不使用 shell 命令,就无法做到这一点。
- name: make a list of dirs
find:
paths:
- "/Users/me/Work/Customers"
file_type: directory
recurse: false
register: projectdirs
- name: Get creation time
shell: GetFileInfo {{ item.path }} | grep 'created:'
loop: "{{ projectdirs.files }}"
loop_control:
label: "{{ item.path }}"
register: directories
- name: Dump found paths
debug:
msg: "{{ item.item.path }} {{ item.stdout.split('created: ')[1] }}"
loop: "{{ directories.results }}"
loop_control:
label: "{{ item.item.path }}"
给了我这个结果:
ok: [localhost] => (item=/Users/jeromeverdoni/stackoverflow/68888321) => {
"msg": "/Users/jeromeverdoni/stackoverflow/68888321 08/23/2021 08:01:44"
}
希望这与您的预期行为足够接近。
作为参考,GetFileInfo 输出:
╰─ GetFileInfo /Users/jeromeverdoni/stackoverflow/68888321
directory: "/Users/jeromeverdoni/stackoverflow/68888321"
attributes: avbstclinmedz
created: 08/23/2021 08:01:44
modified: 08/23/2021 08:03:18
推荐阅读
- android - android - 如何从另一个类更新 mutablieLiveData
- django - 如何运行 Django 定期任务对象的任务 [django-celery-beat]
- java - Log4j2 将记录到控制台,但不是 log.txt 文件
- angularjs - 使用 Ionic 从 Firebase 显示值时遇到问题
- python - 获取所有元素的列表增量计数
- java - 在 JCommander 中出现错误,java 中的 java.lang.NoClassDefFoundError
- mysql - KoolReport 在 laravel vuejs 中显示空白页
- python - Python:熊猫数据框在每一行中拆分字符串,偶尔有空行
- android - Flutter本地通知onSelectNotification点击本地通知时无法打开新页面
- python - 字节字符串未正确拆分