gpt4 book ai didi

json - CentOS监控磁盘使用情况使用 'du'输出JSON

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:32 25 4
gpt4 key购买 nike

我想写一行代码来获取以下结果:

du -sh -c --time /00-httpdocs/*

并以JSON格式输出。目标是为站点中的每个项目文件获取三部分信息:目录路径、上次修改日期和磁盘空间使用情况(以人类可读格式表示)。此命令将以制表符分隔的格式输出该数据,每个条目在终端的新行上:

4.6G    2014-08-22 12:26    /00-httpdocs/00
1.1G 2014-08-22 13:32 /00-httpdocs/01
711M 2014-02-14 23:39 /00-httpdocs/02

目标是将其导出为 JSON 文件,因此需要将其格式化为如下所示:

{"httpdocs": [
{
"size": "4.6G",
"modified": "2014-08-22 12:26",
"path": "/00-httpdocs/00-PREVIEW"}
{
"size": "1.1G",
"modified": "2014-08-22 13:32",
"path": "/00-httpdocs/8oclock"}
{
"size": "711M",
"modified": "2014-02-14 23:39",
"path": "/00-httpdocs/8oclock.new"}
]}

(我知道这不是很合适的 JSON,我只是把它写成一个例子。向我们中间的学究致歉。)

我需要大小作为整数返回(所以也许删除“-sh”并稍后处理转换?)。

我试过使用 awk 和 sed,但我完全是个新手,无法完全正确地设置格式。

到目前为止,我已经做到了:

du -sh -c --time /00-httpdocs/* | awk ' BEGIN {print "\"httpdocs:\": [";} {print "{"$0"},\n";} END {print "]";}'

目标是每天触发两次,以便我们可以获取数据并在 JavaScript 应用程序中使用它。

最佳答案

sed '1 i\
{"httpdocs": [
s/\([^[:space:]]*\)([[:space:]]*\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)/ {\
"size" : "\1",\
"modified": "\2",\
"path": "\3"}/
$ a\^J]}' YourFile

快速而肮脏(在 GNU sed 上的 posix 版本 --posix)。

获取 3 个参数并将它们 (s/../../) 放入"template"中,使用组 (\( ...\)\1)。 在第一行包含页眉 (i\...) 并在最后添加页脚 (a\...)。 [:space:] 可能是 [:blank:]

关于json - CentOS监控磁盘使用情况使用 'du'输出JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25481040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com