json - 输出每个块的特定部分
问题描述
我有一个由 jq 解析的 json,但我需要遍历每个块并获取名称和 lastModified 然后存储它们,以便我可以删除比特定日期更早的 zip 文件。对于这个例子,假设 2020-06-25 是一个“旧包”所以我们有 da-editor-user-groups-1.7.0.zip 和 lastModified 2020-06-25 我需要通过 lastModified 过滤所有此类包带 jq 的属性
{
"success": true,
"results": 6,
"total": 6,
"more": false,
"offset": 0,
"hits": [
{
"path": "/etc/packages/com.change.aem.platform/change-editor-user-accounts-1.3.0.zip",
"excerpt": "/etc/packages/com.change.aem.platform/change-editor-user-accounts-1.3.0.zip",
"name": "change-editor-user-accounts-1.3.0.zip",
"title": "change-editor-user-accounts-1.3.0.zip",
"lastModified": "2020-06-25 17:50:12",
"created": "2020-06-25 17:50:12",
"size": "36 KB",
"mimeType": "application/zip"
},
{
"path": "/etc/packages/com.change.aem.platform/change-editor-user-accounts-1.3.0.zip/jcr:content/vlt:definition/thumbnail.png",
"excerpt": "/etc/packages/com.change.aem.platform/change-editor-user-accounts-1.3.0.zip/jcr:content/vlt:definition/thumbnail.png",
"name": "thumbnail.png",
"title": "thumbnail.png",
"lastModified": "2020-06-25 17:50:13",
"created": "2020-06-25 17:50:13",
"size": "2 KB",
"mimeType": "image/png"
},
{
"path": "/etc/packages/com.change.aem.platform/.snapshot/change-editor-user-accounts-1.3.0.zip",
"excerpt": "/etc/packages/com.change.aem.platform/.snapshot/change-editor-user-accounts-1.3.0.zip",
"name": "change-editor-user-accounts-1.3.0.zip",
"title": "change-editor-user-accounts-1.3.0.zip",
"lastModified": "2020-06-25 17:50:13",
"created": "2020-06-25 17:50:13",
"size": "7 KB",
"mimeType": "application/zip"
},
{
"path": "/etc/packages/com.change.aem.platform/.snapshot/change-editor-user-groups-1.7.0.zip",
"excerpt": "/etc/packages/com.change.aem.platform/.snapshot/change-editor-user-groups-1.7.0.zip",
"name": "change-editor-user-groups-1.7.0.zip",
"title": "change-editor-user-groups-1.7.0.zip",
"lastModified": "2020-06-25 17:50:13",
"created": "2020-06-25 17:50:13",
"size": "12 KB",
"mimeType": "application/zip"
},
{
"path": "/etc/packages/com.change.aem.platform/change-editor-user-groups-1.7.0.zip",
"excerpt": "/etc/packages/com.change.aem.platform/change-editor-user-groups-1.7.0.zip",
"name": "change-editor-user-groups-1.7.0.zip",
"title": "change-editor-user-groups-1.7.0.zip",
"lastModified": "2020-06-25 17:50:13",
"created": "2020-06-25 17:50:13",
"size": "31 KB",
"mimeType": "application/zip"
},
{
"path": "/etc/packages/com.change.aem.platform/change-editor-user-groups-1.7.0.zip/jcr:content/vlt:definition/thumbnail.png",
"excerpt": "/etc/packages/com.change.aem.platform/change-editor-user-groups-1.7.0.zip/jcr:content/vlt:definition/thumbnail.png",
"name": "thumbnail.png",
"title": "thumbnail.png",
"lastModified": "2020-06-25 17:50:13",
"created": "2020-06-25 17:50:13",
"size": "2 KB",
"mimeType": "image/png"
}
]
}
问题是如何创建一个首先检查给定块内容的循环
解决方案
jq 无法执行“rm”命令,但假设您在 bash 或类似 bash 的环境中运行 jq,您可以按照以下建议进行操作:
jq '.hits[] | select( .lastModified[:10] <= "2020-06-25") | .name' |
while read -r f ; do
echo rm "$f" # `echo` for testing
done
这当然假设 .lastModified 字段以日期的 YYYY-MM-DD 形式开始。如果其中任何一个假设不正确,您可以相应地调整上述内容。
推荐阅读
- javascript - 设置 Javascript 文件不是 Rails 服务器的服务器
- android - 无法让服务在 Android 中运行
- python - 了解python函数;返回值
- ios - 确定尽可能低的 iOS / macOS 部署目标的最佳方法
- java - 如何在不依赖数据库的情况下将 JUnit 测试应用于我的 Insert()、update()、delete() 方法(使用 Mockito)
- sql - 简单案例的子查询性能
- python - 我不断收到一个错误,称为“int”对象没有属性“替换”
- node-red - Node-red 使用哪些图形库来绘制拖放节点及其连接
- asp.net - AngularJS 仅在反复刷新页面时才有效
- mysql - SQL排序链表