2013-10-27 45 views
2

我用losetup安装在Linux的2个.DD图像和创建哈希值的列表位于这些图像的每一个文件中的两个MD5哈希表:使用grep翻转功能比较

md5deep -r -e * > winXPimage1.txt 
md5deep -r -e * > winXPimage2.txt 

这是这两个哈希列表如何:

d41d8cd98f00b204e9800998ecf8427e /media/74444E0F444DD510/AUTOEXEC.BAT 
17d7055859d99a0d606cfaf17ae38638 /media/74444E0F444DD510/boot.ini 
d41d8cd98f00b204e9800998ecf8427e /media/74444E0F444DD510/CONFIG.SYS 
88cf0ff92a4a9fa7bd9b7513b2e9e22b /media/74444E0F444DD510/Documents and Settings/… 
Etc… 

这两个图像包含Windows XP安装文件和标准程序。然而,第二张图片也包含很多图片(jpg,png等)。

我想使用grep来比较我创建的两个哈希列表,并从第二个图像中滤除与.jpg文件相关的所有哈希。

我用下面的命令从第一图像删除所有不必要的信息:

cut -f 1 -d ' ' winXPimage1.txt > winXPimage1New.txt 

所以现在image1的散列表如下:

d41d8cd98f00b204e9800998ecf8427e 
17d7055859d99a0d606cfaf17ae38638 
d41d8cd98f00b204e9800998ecf8427e 
etc… 

我想使用grep invert命令比较winXPimage1New.txtwinXPimage2.txt(包含jpeg散列值)并显示所有不匹配的jpg散列行:

grep -v -f winXPimage1New.txt winXPimage2.txt/*.jpg 
grep -v -f .*[.jpg] winXPimage1New.txt winXPimage2.txt 

这些命令都不会从第二个图像哈希列表返回jpg哈希值。我只是不知道我到底该把.jpg文件扩展名放在哪里,因为我一般对Linux很陌生。

+0

我想你想'diff'。 –

回答

2

所以你想过滤.jpg文件?

您可以先从您的哈希列表中仅筛选.jpg文件开始,例如,

grep -E '\.[jJ][pP][eE]?[gG]$' winXPimage1.txt >only-jpeg1.txt 
grep -E '\.[jJ][pP][eE]?[gG]$' winXPimage2.txt >only-jpeg2.txt 

然后让你的md5s的列表中的第一个系统上:

cut -f 1 -d ' ' only-jpeg1.txt > only-jpeg1-md5only.txt 

最后尝试的反向搜索?

grep -v -f only-jpeg1-md5only.txt only-jpeg2.txt 

更新:必须修改,因为我的头两个示例行有-v标志,我肯定不想。很好被@Alex发现。

+1

非常感谢您的回复,PP。我使用了您提供的前两个命令,并在桌面上创建了“only-jpeg1.txt”和“only-jpeg2.txt”文件。唯一的问题是这些文件不包含任何jpg文件及其散列值。我假设“只有jpeg.txt”文件应该只包含jpeg哈希值? – Alex

+0

哎呀!我是个白痴。拔出jpeg时,从grep中删除'-v'标志。 '-v'反转搜索,返回*不匹配的所有行。抱歉。 –

+0

好的,工作!非常感谢你的帮助! – Alex