Как искать файлы по хеш-суммам

Как искать файлы по хеш-суммам

Я часто ищу файлы в своей файловой системе, используя либо 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, если вы хотите выполнить поиск в местах, где у вас нет необходимых разрешений.

Обратите внимание, что эта операция довольно интенсивна для процессора, поскольку она вычисляет хэши всех файлов, а затем пытается сопоставить их с savedодним. Я не знаю ни одного отдельного инструмента, который может достичь того, что вы хотите, так что это может быть выходом, учитывая задачу и входные данные.

Также обратите внимание, что вы можете минимизировать количество файлов для поиска, применив соответствующие параметры, например, findесли файл был доступен в течение последних 24 часов, используйте find /location -atime 0 -type f.

Связанный контент