我想创建保存目录中文件名称、大小和文件的版本的 json。这里的版本号是写在每个文件内部的字符串(每个文件都是一个包含类似函数的 lua 文件
function M.version()
return "1.0"
end
将会告诉版本号)我需要一个 bash 脚本来创建由文件名、大小和其对应版本(从文件内部获取)组成的 json
例如:我有一些 lua 文件,在“/home/anudeep/source”中有 afile.lua bfile.lua、cfile.lua、dfile.lua、efile.lua、ffile.lua、gfile.lua,并且每个 lua 文件里面都有版本函数,例如
function M.version() return "1.0" end
或者
function gfile.version() return "1.0" end
我的 json 文件应该是 file_info.json 包含
{"avaible_files":
[
["afile.lua",2056,"1.0"],
["bfile.lua",948,"2.0"],
["cfile.lua",1054,"1.0.1"],
["dfile.lua",3085,"3.0"],
["efile.lua",9685,"1.0.0"],
["efile.lua",6985,"1.0.2"],
["ffile.lua",9996,"3.1.0"],
["gfile.lua",785,"2.0.0"]
]
}
我对 shell/bash 脚本不太了解,也不太熟悉。在此过程中,尝试使用此命令获取文件名和版本
grep -rs -A1 version .| awk '/return/ {print $ response is ./afile.lua-"1.0"
得到这个回应
./bfile.lua-"2.0" ./cfile.lua-"1.0.0.1" ./dfile.lua-"3.0" ./efile.lua-"1.0.0" ./ffile.lua-"1.0.2" ./gfile.lua-"2.0.0"
但无法编写脚本来创建 json。小帮助也值得赞赏,提前致谢
答案1
我仍然不确定你到底在要求什么,但是你可以考虑类似
#!/bin/bash
shopt -s nullglob
chunk=1000
for f in *.txt; do
size=$(stat -c %s "$f")
parts=$(( size / chunk + (size % chunk > 0) ))
vers=$(grep -sm1 -Po 'return\s+\K\S+' "$f")
printf '["%s",%d,%s,%d]\n' "$f" "$size" "$vers" "$parts"
done | jq -n '{"available_files": [inputs]}'
您可以将实际的拆分命令合并到同一个循环中,如下所示split -b "$chunk" -d "$f" "$f"