Linux Bash-将2个文件列表与其md5校验和进行比较

Linux Bash-将2个文件列表与其md5校验和进行比较,linux,bash,shell,centos,md5,Linux,Bash,Shell,Centos,Md5,我有两个列表,其中包含带有md5sum检查的文件。即使文件相同,列表也有不同的路径。我想检查每个文件的md5总和。我们正在讨论数千个文件,这就是为什么我需要脚本只显示差异。第一个列表是普通列表,第二个列表是文件的当前状态。我想找出哪些文件已更改/与原始文件不同。为此,我想比较两个列表。每行上都有md5总和和文件位置/名称。有人知道怎么做吗?如果其中一个列表中有一个额外的文件怎么办 第一个文件中包含校验和的内容示例(vanila列表): 第二个文件中包含校验和的内容示例(活动列表): 预期结果:

我有两个列表,其中包含带有md5sum检查的文件。即使文件相同,列表也有不同的路径。我想检查每个文件的md5总和。我们正在讨论数千个文件,这就是为什么我需要脚本只显示差异。第一个列表是普通列表,第二个列表是文件的当前状态。我想找出哪些文件已更改/与原始文件不同。为此,我想比较两个列表。每行上都有md5总和和文件位置/名称。有人知道怎么做吗?如果其中一个列表中有一个额外的文件怎么办

第一个文件中包含校验和的内容示例(vanila列表):

第二个文件中包含校验和的内容示例(活动列表):

预期结果:

To show me that file-4.php is with different md5 sum.
If shows that there is an extra file (file-1.1.php) it's a bonus!

尝试使用
Awk
,这是一种适用于此的正确工具

awk -F"/" 'FNR==NR{filearray[$1]=$NF; next }!($1 in filearray){printf "%s has a different md5sum\n",$NF}' file2 file1
file4.php has a different md5sum
其中,
file2
file1
如下

$ cat file1
df7a0edcb7994581430379db56d8d53b  /home/user/vanila/file-1.php
e1af39e94239a944440ab2925393ae60  /home/user/vanila/file-2.php
ce74e43d24d9c36cd579e932ee94b152  /home/user/vanila/file-3.php
95b7d47ed7134912270f8d3059100e8c  /home/user/vanila/file-4.php

$ cat file2
df7a0edcb7994581430379db56d8d53b  /home/user/file-1.php
94b2a24a1fc9883246fc103f22818930  /home/user/file-1.1.php
e1af39e94239a944440ab2925393ae60  /home/user/file-2.php
ce74e43d24d9c36cd579e932ee94b152  /home/user/file-3.php
f5233ee990c50aade7c4e3ab9b4fe524  /home/user/file-4.php
要查找文件不存在于其中一个或另一个中

awk -F"/" 'FNR==NR{filelist[$NF]=$NF; next;}!($NF in filelist){printf "%s is an extra file",$NF}' file1 file2
file-1.1.php is an extra file

提供输入文件和所需的same@Inian添加了文件内容的示例,并添加了预期结果!这很有魅力!非常感谢。然而,我正在考虑另一种方法来告诉我是否有任何额外的文件。我会张贴它一旦我有它!再次感谢您的快速响应@萨斯尼孔:很乐意帮忙!更新也在运行。我的另一种方法是采用“活动列表”(file2)并使用
sed
用“普通列表”(file1)中的路径更新其路径。然后运行下面的
md5sum-c--quiet file2
这将在普通文件上运行,并显示是否有具有不同md5求和的文件,以及是否有在普通文件中找不到的文件。@SasnycoN:如果你能找到自己的解决方案,那就好了!我主要关心的是哪一个会更快,资源消耗更少,但这将在一些测试后知道。;)再次感谢你的回答!
$ cat file1
df7a0edcb7994581430379db56d8d53b  /home/user/vanila/file-1.php
e1af39e94239a944440ab2925393ae60  /home/user/vanila/file-2.php
ce74e43d24d9c36cd579e932ee94b152  /home/user/vanila/file-3.php
95b7d47ed7134912270f8d3059100e8c  /home/user/vanila/file-4.php

$ cat file2
df7a0edcb7994581430379db56d8d53b  /home/user/file-1.php
94b2a24a1fc9883246fc103f22818930  /home/user/file-1.1.php
e1af39e94239a944440ab2925393ae60  /home/user/file-2.php
ce74e43d24d9c36cd579e932ee94b152  /home/user/file-3.php
f5233ee990c50aade7c4e3ab9b4fe524  /home/user/file-4.php
awk -F"/" 'FNR==NR{filelist[$NF]=$NF; next;}!($NF in filelist){printf "%s is an extra file",$NF}' file1 file2
file-1.1.php is an extra file