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