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

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

输出:

3abb17b66815bc7946cefe727737d295  ./iso/somefile.iso

我如何“剥离”文件名,只保留值?


当前回答

md5=`md5sum ${my_iso_file} | cut -b-32`

其他回答

如果文件名中有反斜杠,Md5sum会在散列前加上一个反斜杠。前32个字符或第一个空格之前的任何字符可能不是正确的散列。

当使用标准输入时(文件名将只是-),它不会发生,所以pixelbeat的答案将工作,但许多其他将需要添加像| tail -c 32这样的东西。

你可以使用cut在空格上分割行,只返回第一个字段:

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

在Mac OS X上:

md5 -q file
md5=`md5sum ${my_iso_file} | cut -b-32`
md5=$(md5sum < $file | tr -d ' -')