我使用losetup在Linux中安装了两个.dd图像,并为这些图像上的每个文件创建了一个哈希值列表:
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.txt
与winXPimage2.txt
(包含jpeg哈希值)进行比较,并显示所有不匹配的jpg哈希行:
grep -v -f winXPimage1New.txt winXPimage2.txt/*.jpg
grep -v -f .*[.jpg] winXPimage1New.txt winXPimage2.txt
这些命令都不会从第二个图像哈希列表返回jpg哈希值。我只是不确定我在哪里放置.jpg文件扩展名,因为我对Linux一般都不熟悉。
答案 0 :(得分: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
然后在第一个系统上获取md5列表:
cut -f 1 -d ' ' only-jpeg1.txt > only-jpeg1-md5only.txt
最后尝试倒置搜索?
grep -v -f only-jpeg1-md5only.txt only-jpeg2.txt
更新:必须编辑,因为前两个示例行有-v
个标记,我绝对不想要。很好地发现了@Alex。