![如何通过哈希值搜索文件](https://linux22.com/image/1126937/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%93%88%E5%B8%8C%E5%80%BC%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6.png)
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
。