2013-10-27 46 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