Как я нахожу файл от данного Значения хэш-функции в Linux?
Обратите внимание на то, что я не хочу находить значение хэш-функции файла, мне нужна противоположность этого.
От моих предположений и понимания вопроса, Вы могли, вероятно, сделать это несколькими способами.
Один путь был бы, если Вы знаете точно, какой каталог искать соответствие хеша затем Вы могли просто передать хеш и затем проверить файлы в тот каталог. Так в основном то, что Вы делаете, является этим:
myHash="$1"
[[ $(sha256sum fileName | awk {'print $1'}) == "$myHash" ]] && echo "File found"
Упрощение этого с для цикла:
checkHash(){
myHash="$1" ## The hash of the file that you want to find
if (( $# == 1 )); then ## Must pass at least one argument
## Checking each file in the pwd
for X in *; do
if [[ -f $X ]]; then
local hash=$( sha256sum $X | awk '{print $1}' )
[[ "$myHash" == "$hash" ]] && {
echo "Hash matches for $X";
}
fi
done
fi
}
checkHash "$@"
Однако это не просканировало бы хеш никаких файлов, запущенных с точки.
Иначе относился бы xargs
и find
команда.
Как @MelcomX указанный с find
команда можно сделать это в одном лайнере, однако это могло бы занять много времени. Хорошая вещь об этом решении состоит в том, что можно передать часть хеша, и это все еще работало бы, так как это grep
луг.
find / -exec sha512sum {} + | grep YOURHASHHERE
Если это не то, что Вы искали, затем разработайте свой вопрос как @Eliah Kagan, предложенный в комментарии так, чтобы мы могли понять то, что Вы искали или рассматриваете принятие ответа.