2025-11-20 23:13:28 +08:00
2024-09-26 10:05:03 +08:00
2024-09-26 10:05:03 +08:00
2024-09-26 10:05:03 +08:00
2024-09-26 10:05:03 +08:00
2025-11-20 23:13:28 +08:00
2025-11-20 23:13:28 +08:00

l-s

Summary any files meta.

使用说明

接收1个命令行参数为文件/文件夹路径,如命令行参数为空,则默认为当前路径。

元数据均以json格式保存且经过pretty打印以方便人类阅读。

对于输入参数是文件的情况:

文件的元数据命名与原文件相同仅新增json拓展名。

文件的元数据保存路径是其所在路径下的meta子文件夹如果元数据保存路径不存在则新建。

如果文件的元数据不存在,则计算元数据并保存。

如果文件的元数据存在则对元数据中的xxh128部分进行校验。

如果校验通过,则打印校验成功。

如果校验不通过,计算当前的元数据并打印到标准输出,保留原元数据文件不动。

对于输入参数是文件夹的情况:

遍历这个文件夹,以字母序遍历遇到的每一个子文件夹和文件。

文件夹的元数据文件就保存在其中,命名为meta.json

如果文件夹的元数据不存在,则遍历计算并保存。

如果文件夹的元数据存在,则对原元数据文件重命名为meta-old.json并对其中所有文件的xxh128部分校验。

遍历如果发现有新增文件或删除文件,都应打印到标准输出提示用户。

如果全部校验一致,则重新命名回meta.json

标准meta.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"
}
Description
No description provided
Readme 51 KiB
Languages
Rust 100%