如何通过哈希值搜索文件

如何通过哈希值搜索文件

tree我经常使用命令和grep或命令在文件系统中搜索文件find,但最近我从某个网站下载了一些内容,但忘记了保存的位置,现在我知道它的 SHA256sum,但我不知道它的名字,也不知道它的任何内容。那么,有没有办法在我的系统中搜索任何与该特定哈希值匹配的文件?如果没有现成的简单方法,有人可以建议一个可以让我完成这项任务的脚本吗?


操作系统信息:

Description:    Ubuntu 15.04
Release:    15.04

答案1

用这个:

#!/bin/bash
saved='b3eeb9430063ee4db5f80b97d4dfb4c4f7667e6e58fd12f849a4ed6779b7f212'
find /home/user/ -type f | while IFS= read -r file; do
    [[ "$(sha256sum "$file" | cut -d' ' -f1)" == $saved ]] && echo "$file"
done
  • saved将包含您拥有的文件的哈希值

  • /home/user/它将查找(将其替换为您想要的位置) 和子目录中的所有文件,并将其哈希值与saved

  • 如果匹配,它将打印文件名

sudo如果您想搜索没有所需权限的地方,请运行该脚本。

请注意,此操作非常耗费 CPU,因为它将计算所有文件的哈希值,然后尝试匹配一个saved文件。我不知道有任何独立工具可以实现您想要的功能,因此考虑到手头的任务和输入,这可能是可行的方法。

还要注意的是,您可以通过应用相关选项来尽量减少要搜索的文件量,例如,find如果该文件是在过去 24 小时内访问的,则使用find /location -atime 0 -type f

相关内容