Image 如何按内容查找重复的JPG?

Image 如何按内容查找重复的JPG?,image,image-processing,Image,Image Processing,我想在一系列文件夹中查找并删除图像。问题是图像名称不一定相同 我所做的是从图像字节码中复制一个任意字符串,然后像这样使用它 grep -ir 'YA'uu�KU���^H2�Q�W^YSp��.�^H^\^Q��P^T' . 但由于有成千上万的图像,这种方法将永远持续下去。另外,有些图像是由imagemagic创建的原始图像,因此无法使用大小来查找所有图像 所以我想知道最有效的方法是什么?更新的答案 如果您考虑了要与之比较的特定文件的校验和,则可以对所有子目录中的所有文件进行校验和,并找到相同

我想在一系列文件夹中查找并删除图像。问题是图像名称不一定相同

我所做的是从图像字节码中复制一个任意字符串,然后像这样使用它

grep -ir 'YA'uu�KU���^H2�Q�W^YSp��.�^H^\^Q��P^T' .
但由于有成千上万的图像,这种方法将永远持续下去。另外,有些图像是由imagemagic创建的原始图像,因此无法使用大小来查找所有图像


所以我想知道最有效的方法是什么?

更新的答案

如果您考虑了要与之比较的特定文件的校验和,则可以对所有子目录中的所有文件进行校验和,并找到相同的文件:

find . -name \*.jpg -exec bash -c 's=$(md5 < {}); echo $s {}' \; | grep "94b48ea6e8ca3df05b9b66c0208d5184"
原始答案

最简单的方法是为每个文件生成一次md5校验和。根据
md5
程序的工作方式,您可以执行以下操作:

find . -name \*.jpg -exec bash -c 's=$(md5 < {}); echo $s {}' \;

94b48ea6e8ca3df05b9b66c0208d5184 ./a.jpg
f0361a81cfbe9e4194090b2f46db5dad ./b.jpg
c7e4f278095f40a5705739da65532739 ./c.jpg

现在,您可以使用uniq查找所有重复项。

更新答案

如果您考虑了要与之比较的特定文件的校验和,则可以对所有子目录中的所有文件进行校验和,并找到相同的文件:

find . -name \*.jpg -exec bash -c 's=$(md5 < {}); echo $s {}' \; | grep "94b48ea6e8ca3df05b9b66c0208d5184"
原始答案

最简单的方法是为每个文件生成一次md5校验和。根据
md5
程序的工作方式,您可以执行以下操作:

find . -name \*.jpg -exec bash -c 's=$(md5 < {}); echo $s {}' \;

94b48ea6e8ca3df05b9b66c0208d5184 ./a.jpg
f0361a81cfbe9e4194090b2f46db5dad ./b.jpg
c7e4f278095f40a5705739da65532739 ./c.jpg

现在您可以使用
uniq
查找所有副本。

请修改该命令,以便它将子目录中的所有文件与目标图像的校验和进行比较并列出,即
94b48ea6e8ca3df05b9b66c0208d5184
?这是一种非常缓慢的方法。我将我的“bicycle”与sqlite&md5sum进行了比较,以查找重复项和
fdupes
。后者至少快了三到四倍!请修改该命令,以便将子目录中的所有文件与目标图像的校验和进行比较并列出,即
94b48ea6e8ca3df05b9b66c0208d5184
?这是一种非常缓慢的方法。我将我的“bicycle”与sqlite&md5sum进行了比较,以查找重复项和
fdupes
。后者至少快了三到四倍!如果图像完全相同,请使用
fdupes
删除副本。如果不是,那么问题就不那么简单了。如果图像完全相同,请使用
fdupes
删除副本。如果不是的话,这个问题并不像看上去那么琐碎。