我使用md5sum为文件生成哈希值。但是我只需要接收哈希值,而不是文件名。
md5=`md5sum ${my_iso_file}`
echo ${md5}
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我如何“剥离”文件名并仅保留其值?
我使用md5sum为文件生成哈希值。但是我只需要接收哈希值,而不是文件名。
md5=`md5sum ${my_iso_file}`
echo ${md5}
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我如何“剥离”文件名并仅保留其值?
Answers:
那么另一种方式:)
md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`
md5=`md5sum < ${my_iso_file}`
但是,它仍然在末尾输出“-”。但是为了进行比较,这应该足够了。
MD5 (/Users/hello.txt) = 24811012be8faa36c8f487bbaaadeb71
,您的代码返回MD5
。
-
通过添加| awk '{print $1}'
代码结尾=> md5sum < ${my_iso_file} | awk '{print $1}'
@ChristopheDeTroyer
一个简单的数组赋值工作...请注意,数组的第一个元素bash
可以通过name
不带[0]
索引的来寻址,即,$md5
仅包含md5sum的32个字符。
md5=($(md5sum file))
echo $md5
# 53c8fdfcbb60cf8e1a1ee90601cc8fe2
bash
,但是您能告诉我array是仅bash功能还是某些shell标准?
echo>file; for i in file; do md5=($(md5sum file)); echo $md5; done
-应该输出68b329da9893e34099c7d8ad5cb9c940
echo ($(echo -n foo | md5sum))
不起作用?错误信息出炉 bash: syntax error near unexpected token $(echo -n foo | md5sum)'
echo -n foo | md5sum
两个shell 字输出到stdout:acbd18db4cc2f85cedef654fccc4a4d8
和-
(-
将源表示为stdin)。-你必须告诉bash中捕捉那些话转换成字符串,使用命令替换:$( command )
。– (
括号)
产生一个包含2个元素的bash数组。但是,您必须将该数组构造分配给( … )
变量名。因此,使用md5作为数组名称:md5=($(echo -n foo | md5sum))
。您尚未将数组分配给变量名
您可以用于cut
在空格处分割线,并仅返回第一个此类字段:
md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)
cut -c 1-32
md5sum
-> sha256sum
无需记住您需要“剪切”多少字符。
在Mac OS X上:
md5 -q file
gmd5sum
,从coreutils
将在MacOS工作就像md5sum
在这里提到的其他答案。
md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"
$()
(尽管它们无害),但肯定需要引号${}
。
md5sum
如果文件名中有反斜杠,则将反斜杠放在哈希之前。前32个字符或第一个空格之前的任何内容可能不是正确的哈希。当使用标准输入(文件名为-)时,它不会发生,因此pixelbeat的答案将起作用,但许多其他要求添加诸如的内容| tail -c 32
。
好吧,我今天遇到了同样的问题,但是在运行find
命令时尝试获取文件md5哈希。我得到了投票最多的问题,并将其包装在一个称为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
因此,我从这里以及find -exec shell函数中得到了一些东西?
md5=$(md5sum < index.html | head -c -4)