Получить только значение хеша, используя md5sum (без имени файла) - PullRequest
153 голосов
/ 09 сентября 2010

Я использую md5sum для генерации хеш-значения для файла. Но мне нужно только получить хеш-значение, а не имя файла.

md5=`md5sum ${my_iso_file}`
echo ${md5}

3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso

Как я могу "удалить" имя файла и оставить только значение?

Ответы [ 15 ]

0 голосов
/ 05 января 2018

Что ж, сегодня у меня была такая же проблема, но я пытался получить хэш файла md5 при запуске команды find. Я получил вопрос с наибольшим количеством голосов и обернул его функцией md5 для запуска в команде find. Миссия для меня состояла в том, чтобы вычислить хеш для всех файлов в папке и вывести его как hash:filename.

md5() { md5sum $1 | awk '{ printf "%s",$1 }'; }
export -f md5
find -type f -exec bash -c 'md5 "$0"' {} \; -exec echo -n ':' \; -print

Итак, я получил кое-что отсюда, а также найти -exec функцию оболочки?

0 голосов
/ 30 декабря 2016

md5sum ставит обратную косую черту перед хешем, если в имени файла есть обратная косая черта.Первые 32 символа или что-либо перед первым пробелом могут быть неправильным хешем.Это не произойдет при использовании стандартного ввода (имя файла будет просто -), поэтому ответ pixelbeat будет работать, но для многих других потребуется добавить что-то вроде | tail -c 32.

0 голосов
/ 09 сентября 2010
md5=$(md5sum < index.html | head -c -4)
0 голосов
/ 09 сентября 2010

Другой способ:

md5=$(md5sum ${my_iso_file} | sed '/ .*//' )
0 голосов
/ 09 сентября 2010
md5=`md5sum ${my_iso_file} | cut -b-32`
...