我在text.json文件中有一个包含这种格式数据的json
[
{
"name": "page/page1.html",
"properties": {
"lastModified": "2021-08-10T18:00:45+00:00",
}
},
{
"name": "page/page2.html",
"properties": {
"lastModified": "2021-08-10T19:24:23+00:00",
}
},
{
"name": "page/page3.html",
"properties": {
"lastModified": "2021-08-10T20:36:21+00:00",
}
}
]
我想做一个列表,列出30分钟前最后一次修改的所有文件名。这是我目前的查询,以获得一个文件名列表作为变量,我可以稍后使用。
file_names=`cat text.json | jq -r .[].name`
我如何使用jq根据属性中的时间戳过滤lastModified超过30分钟,这样我就只得到相关的文件名?
3条答案
按热度按时间p4tfgftt1#
我通常会在native bash中计算目标日期。
pw136qt22#
这似乎工作
55ooxyrt3#
让
jq
执行所有日期计算:使用bash 4及更高版本的
mapfile
:如果没有
mapfile
,记录将使用ASCIIRS
控制字符而不是null
字节进行分隔:以下是带有注解的独立
jq
脚本: