From 6ab9c3895590600a1a54512fdea1e5a3d795647a Mon Sep 17 00:00:00 2001 From: licsber Date: Thu, 20 Nov 2025 23:13:28 +0800 Subject: [PATCH] write rules for ai. --- Cargo.toml | 2 +- README.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8eb31ec..d41a67b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["licsber "] edition = "2021" -description = "Summary all files to meta.json." +description = "Summary any file‘s meta." repository = "https://git.licsber.site/rust/l-s" homepage = "https://blog.licsber.site" readme = "README.md" diff --git a/README.md b/README.md index e3e380d..9bf26e8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,68 @@ # l-s -summary all files to `meta.json`. +Summary any file‘s meta. + +## 使用说明 + +接收1个命令行参数,为文件/文件夹路径,如命令行参数为空,则默认为当前路径。 + +元数据均以json格式保存,且经过pretty打印,以方便人类阅读。 + +对于输入参数是文件的情况: + +文件的元数据命名与原文件相同,仅新增json拓展名。 + +文件的元数据保存路径是其所在路径下的meta子文件夹,如果元数据保存路径不存在,则新建。 + +如果文件的元数据不存在,则计算元数据并保存。 + +如果文件的元数据存在,则对元数据中的xxh128部分进行校验。 + +如果校验通过,则打印校验成功。 + +如果校验不通过,计算当前的元数据并打印到标准输出,保留原元数据文件不动。 + +对于输入参数是文件夹的情况: + +遍历这个文件夹,以字母序遍历遇到的每一个子文件夹和文件。 + +文件夹的元数据文件就保存在其中,命名为`meta.json`。 + +如果文件夹的元数据不存在,则遍历计算并保存。 + +如果文件夹的元数据存在,则对原元数据文件重命名为`meta-old.json`,并对其中所有文件的xxh128部分校验。 + +遍历如果发现有新增文件或删除文件,都应打印到标准输出提示用户。 + +如果全部校验一致,则重新命名回`meta.json`。 + +标准`meta.json`的格式如下: + +```json +{ + "dir_name": "test", + "dirs": [ + { + "dir_name": "j", + "dirs": [], + "files": [ + { + "basename": "CW-NAS-J6-230729.iso", + "size": 20000768, + "friendly_size": "19.07MB", + "mtime": 1763445083, + "head_115": "0F62212861F9AB6213A793AA74B33C8856AA9D45", + "head_baidu": "FE3C25567C3681EEAA1EAAE7804460CF", + "ed2k": "D3F1330B892884240142296E0A670EE4", + "md5": "AB14F900F1ABBF6A723EB8F7D6DDABC1", + "sha1": "B1D31D15A866EE0C3DCC9972FB92EE6FA2BE4D4A", + "sha256": "E217F816094C5EE4CF366E6F168851C13B27D8CC9C42F392B637CAD1C20A8510", + "xxh128": "F4A47B42150480BE1193EA7DA0DFD083" + } + ] + } + ], + "files": [], + "v": "2022-10-24" +} +```