我们如何比较两个不同位置的两个文件。一个位置在winscp中,另一个位置在git中

时间:2018-10-30 16:11:13

标签: git winscp

我需要编写一个脚本来比较两个不同位置的两个文件。一个位置在winscp中,另一个位置在git中。例如,位置A在winscp中,它有1000个文件,位置B在git中,并且有大约1500个文件。现在,我需要编写脚本来检查两个位置上所有文件的共同点或不同点。

1 个答案:

答案 0 :(得分:0)

这是您应该做什么的要旨:

  1. 为每个存储库生成哈希列表,例如find repo_dir -type f -exec md5 {} + > hashes.txt

    MD5 (file_a) = 6f5902ac237024bdd0c176cb93063dc4
    MD5 (file_b) = 6f5902ac237024bdd0c176cb93063dc4
    

    在需要添加/排除文件时修改find

    将每个哈希列表视为键/值对。您想找到整个存储库中的增量。您只对具有相同文件的存储库感兴趣。您将需要一种跟踪它的方法(例如repoCount计数器)。

    每个哈希列表数据都需要进入另一个表表,为文件建立索引并将其哈希值推入运行表的条目。

  2. 迭代键/值表,如果所有存储库中都存在该条目,请检查散列是否存在差异,并根据需要进行相应输出。

数据结构可能类似于以下JSON:

{
    "file_path": { "repoCount": 3, "hashes": [ { "base": "repo1", "hash": "6f59..." }, ...],
    ...
}