【发布时间】:2014-10-18 07:35:12
【问题描述】:
我想写一行代码来获取以下结果:
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,我只是将它写为示例。向我们中间的迂腐表示歉意。)
我需要 size 以整数形式返回(所以也许删除 '-sh' 并稍后处理转换?)。
我尝试过使用 awk 和 sed,但我完全是新手,无法完全正确地设置格式。
我已经做到了这一点:
du -sh -c --time /00-httpdocs/* | awk ' BEGIN {print "\"httpdocs:\": [";} {print "{"$0"},\n";} END {print "]";}'
我们的目标是每天两次触发此触发器,以便我们可以获取数据并在 JavaScript 应用程序中使用它。
【问题讨论】: