我需要编写一个脚本来比较两个不同位置的两个文件。一个位置在winscp中,另一个位置在git中。例如,位置A在winscp中,它有1000个文件,位置B在git中,并且有大约1500个文件。现在,我需要编写脚本来检查两个位置上所有文件的共同点或不同点。
答案 0 :(得分:0)
这是您应该做什么的要旨:
为每个存储库生成哈希列表,例如find repo_dir -type f -exec md5 {} + > hashes.txt
:
MD5 (file_a) = 6f5902ac237024bdd0c176cb93063dc4
MD5 (file_b) = 6f5902ac237024bdd0c176cb93063dc4
在需要添加/排除文件时修改find
将每个哈希列表视为键/值对。您想找到整个存储库中的增量。您只对具有相同文件的存储库感兴趣。您将需要一种跟踪它的方法(例如repoCount
计数器)。
每个哈希列表数据都需要进入另一个表表,为文件建立索引并将其哈希值推入运行表的条目。
迭代键/值表,如果所有存储库中都存在该条目,请检查散列是否存在差异,并根据需要进行相应输出。
数据结构可能类似于以下JSON:
{
"file_path": { "repoCount": 3, "hashes": [ { "base": "repo1", "hash": "6f59..." }, ...],
...
}