我想编写一行代码来获取结果:
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应用程序中使用它。
答案 0 :(得分:1)
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/../../
)放入使用组(\( ...\)
和\1
)的“模板”中。
在第一行(i \...
)包含标题,并在最后添加页脚ant(a \...
)。
[:space:]
可能是[:blank:]