2014-12-13 35 views
2

我想根据带有校验和的列表在两个文件夹之间找到重复项。如何查找两个列表(但不在两个列表中)之间的校验和匹配?

一些外壳脚本(一些的bashAWK或类似的)将是最好的溶液。

假设两个文件夹我已经生成了两个列表

[FolderA.txt] 
file1 abc1 
file2 abc1 
file3 def5 

[FolderB.txt] 
file4 abc1 
file5 mno2 
file6 def5 

现在我想找到答案,那

  • 文件1匹配文件4(同校验和abc1)
  • file2与file4匹配(相同checksu米ABC1)
  • file3的匹配file6(相同的校验def5)

但是,我只希望在文件夹之间的匹配,而不是一个文件夹中。因此,我不想在file1和file2之间进行匹配。

回答

2

您可以使用此:

join -j2 <(sort -k2 FolderA.txt) <(sort -k2 FolderB.txt) 

输出:

 
abc1 file1 file4 
abc1 file2 file4 
def5 file3 file6 

如果你想只列2和3,加入| cut -d " " -f 2-

+1

完美的作品,谢谢。正如我现在所了解的,为了只显示文件名,还可以使用参数'-o 1.1,2.1'和'join'。 – David 2014-12-13 07:07:51

+0

选项'-o'非常好。 – Cyrus 2014-12-13 07:45:36