我使用md5sum为文件生成哈希值。 但我只需要接收哈希值,而不是文件名。
md5=`md5sum ${my_iso_file}`
echo ${md5}
输出:
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我如何“剥离”文件名,只保留值?
我使用md5sum为文件生成哈希值。 但我只需要接收哈希值,而不是文件名。
md5=`md5sum ${my_iso_file}`
echo ${md5}
输出:
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
我如何“剥离”文件名,只保留值?
当前回答
如果你担心文件名不正常:
md5sum < "${file_name}" | awk NF=1
f244e67ca3e71fff91cdf9b8bd3aa7a5
其他更混乱的处理方法:
md5sum "${file_name}" | awk NF=NF OFS= FS=' .*$' 或 | awk '_{exit}++_' RS=' '
f244e67ca3e71fff91cdf9b8bd3aa7a5
完全在awk中完成:
mawk '开始 { __ = ARGV[ --ARGC ] _ = sprintf(“%c”,(_+=(_^=_<_)+_)^_+_*++_) RS = FS gsub(_,“&\\\\&”,__) ( _=“ md5sum < ”((_)(__)_) ) |获取线 print $(_*close(_)) }' “${file_name}”
f244e67ca3e71fff91cdf9b8bd3aa7a5
其他回答
你可以使用cut在空格上分割行,只返回第一个字段:
md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)
md5=`md5sum ${my_iso_file} | cut -b-32`
md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"
另一种方法是:
md5sum filename | cut -f 1 -d " "
Cut将行分割为每个空格,只返回第一个字段。
另一种方法:
md5=$(md5sum ${my_iso_file} | sed '/ .*//' )