在我的假设文件夹/hd/log/
中,我有2个文件夹,每个文件夹都有这种格式的日志文件foldername.2017.07.09.log
。我有一个crontab,每晚都会压缩最后一个日志文件,因此每天都会有一个带有新日志名称的新日志文件。
我正在尝试创建一个动态json文件,其输出如下:
[
{
"Foldername": "foldername",
"lastmodifiedfile": "/hd/log/foldername/foldername.2017.07.09.log"
},
{
"Foldername": "foldername2",
"lastmodifiedfile": "/hd/log/foldername2/foldername2.2017.07.09.log"
}
]
bash脚本应该能够为每个子文件夹名称动态创建数组(如果添加了更多文件夹或更改了名称),并且还可以直接链接到上次修改的文件。
我已经用php程序来解析json文件了,但没有理智的方法来动态地创建这个json文件。
感谢任何帮助或指示。
答案 0 :(得分:0)
printf "%s" "["
for var in $(find /hd/log -type d)
do
path=$("ls -1t $var" | head -1)
echo $var"/"$path | awk -F\/ '{ printf "%s","\n\t{\n\t\t\"Foldername\":\""$(NF-1)"\",\n\t\tlastmodifiedfile\":\""$0"\"\n\t},"}'
done
printf "%s" "]"
这里我们在循环中找到/ hd / log中的所有目录依次获取每个目录,然后使用ls -1t | head -1获取目录中的最后一个修改过的文件。然后通过awk解析路径和文件以获得所需的输出。我们首先使用-F标志将awk的分隔符设置为/。然后我们根据需要使用目录的最后一个/分隔数据(NF -1 - 数字字段-1)和最后修改文件的完整行($ 0)打印json语法。