我使用md5sum为文件生成哈希值。 但我只需要接收哈希值,而不是文件名。
md5=`md5sum ${my_iso_file}`
echo ${md5}
输出:
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我如何“剥离”文件名,只保留值?
我使用md5sum为文件生成哈希值。 但我只需要接收哈希值,而不是文件名。
md5=`md5sum ${my_iso_file}`
echo ${md5}
输出:
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我如何“剥离”文件名,只保留值?
当前回答
靠在头上:
md5_for_file=`md5sum ${my_iso_file}|head -c 32`
其他回答
靠在头上:
md5_for_file=`md5sum ${my_iso_file}|head -c 32`
为了完整起见,sed使用正则表达式和捕获组的一种方法:
md5=$(md5sum "${my_iso_file}" | sed -r 's:\\*([^ ]*).*:\1:')
正则表达式捕获一个组中的所有内容,直到到达一个空格。要使捕获组工作,您需要捕获sed中的所有内容。
(关于sed和捕获组的更多信息请参见:如何使用sed只输出捕获的组?)
作为sed中的分隔符,我使用冒号,因为它们在文件路径中无效,而且我不必转义文件路径中的斜杠。
md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"
md5=`md5sum ${my_iso_file} | cut -b-32`
你可以使用cut在空格上分割行,只返回第一个字段:
md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)