69 lines
2.1 KiB
Markdown
69 lines
2.1 KiB
Markdown
# l-s
|
||
|
||
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": "child",
|
||
"dirs": [],
|
||
"files": [
|
||
{
|
||
"basename": "233",
|
||
"size": 4,
|
||
"friendly_size": "4.00B",
|
||
"mtime": 1763654099,
|
||
"head_115": "28AAB5A575FA1138E2CE5B1366AE697685775011",
|
||
"head_baidu": "1490AAA92CB684B2110DDB29D7A1AC15",
|
||
"ed2k": "6CB03133656BDB8DFC780EBBD4FF47CC",
|
||
"md5": "9F3D9739B11C2A4B08EA48512AC467F6",
|
||
"sha1": "10E25C6EC9A30C731BF82E5DBA37BC693E9F615D",
|
||
"sha256": "5F8064636753265C7F1B1EE075DF77E1AE9BCE7E94831DE583784A0C13EB902F",
|
||
"xxh128": "B92C6051418D532F7E933C08C44C4C88"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"files": [],
|
||
"v": "2022-10-24"
|
||
}
|
||
```
|