bash - bash只使用 md5sum ( 没有文件名) 获取哈希值

  显示原文与译文双语对照的内容
59 4

使用md5sum为文件生成哈希值。 但我只需要接收哈希值,而不是文件名。


md5=`md5sum ${my_iso_file}`


echo ${md5}



3abb17b66815bc7946cefe727737d295./iso/somefile.iso

如何'条带'文件名且仅保留值?

时间: 原作者:

81 3

另一种方法:)


md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`



原作者:
69 4

一个简单的array 分配工作。 请注意,bash array的第一个元素只能由没有 [0] 索引。IE 。$md5 只包含 32个字符的name 解决。


md5=($(md5sum file))


echo $md5


# 53c8fdfcbb60cf8e1a1ee90601cc8fe2



58 3

可以使用 cut 在空格上拆分直线,只返回第一个这样的字段:


md5=$(md5sum"$my_iso_file" | cut -d ' ' -f 1)



原作者:
71 3

md5="$(md5sum"${my_iso_file}")"


md5="${md5%% *}" # remove the first space and everything after it


echo"${md5}"



81 4

一种方法:


set -- $(md5sum $file)


md5=$1



另一种方法:


md5=$(md5sum $file | while read sum file; do echo $sum; done)



另一种方法:


md5=$(set -- $(md5sum $file); echo $1)



( 除非你非常敢心,否则不要试图使用反向刻度。)

其他解决方案相比,这些解决方案的优点是只调用 md5sum 和 shell,而不是其他程序( 如 awk 或者 sed ) 。 不管这是否重要,然后一个单独的问题,你可以能会很难注意到差异。

原作者:
86 2

另一种方法是:


md5sum filename |cut -f 1 -d""



剪切将分割到每个空格并只返回第一个字段。

61 0

如果需要打印它并且不需要换行符,可以使用:


printf $(md5sum filename)



原作者:
96 4

如果文件名中有反斜杠,md5sum 将在哈希前放置反斜杠。 第一个空格前的第 32个字符或者任何一个字符可以能不是正确的哈希。 当使用标准输入( 文件名只是- ) 时不会发生这种情况,因此插件的回答将工作,但许多其他人需要添加类似于标准输入| tail -c 32

原作者:
123 5

我今天有同样的问题,但是在运行 find 命令时尝试获得文件md5散列。 我得到了最大的投票问题,并将它包装在一个叫做 md5的函数中,以便在查找命令中运行。 我的任务是计算文件夹中所有文件的哈希,并将它的输出为 hash:filename


md5() { md5sum $1 | awk '{ printf"%s",$1 }'; }


export -f md5


find -type f -exec bash -c 'md5"$0"' {} ; -exec echo -n ':' ; -print



因此,我从这里得到一些 Fragment,也从 find -exec 中得到 shell 函数

...