223

md5sumを使用して、ファイルのハッシュ値を生成します。ただし、ファイル名ではなく、ハッシュ値を受け取るだけで済みます。

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

出力:

3abb17b66815bc7946cefe727737d295  ./iso/somefile.iso

ファイル名を「削除」して値のみを保持するにはどうすればよいですか?

4

16 に答える 16

226

単純な配列割り当てが機能します... Bash 配列の最初の要素は、インデックスnameなしでアドレス指定できることに注意してください。つまり、 md5sumの 32 文字のみが含まれます。[0]$md5

md5=($(md5sum file))
echo $md5
# 53c8fdfcbb60cf8e1a1ee90601cc8fe2
于 2011-04-24T22:47:41.480 に答える
213

AWK の使用:

md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`
于 2010-09-09T19:16:27.473 に答える
70

cutスペースで行を分割し、最初のそのようなフィールドのみを返すために使用できます。

md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)
于 2010-09-09T18:11:51.837 に答える
29

Mac OS X の場合:

md5 -q file
于 2010-09-10T07:56:32.843 に答える
17
md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"
于 2010-09-09T18:22:17.563 に答える
9

別の方法は次のとおりです。

md5sum filename | cut -f 1 -d " "

cutは行を各スペースに分割し、最初のフィールドのみを返します。

于 2015-05-23T09:31:18.210 に答える
6

一方通行:

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

別の方法:

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

別の方法:

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

(非常に勇気があり、バックスラッシュが得意でない限り、バッククォートを使用しないでください。)

他のソリューションに対するこれらのソリューションの利点は、またはmd5sumなどの他のプログラムではなく、 およびシェルのみを呼び出すことです。それが実際に重要かどうかは別の問題です。おそらく違いに気付くのは難しいでしょう。awksed

于 2010-09-09T20:09:20.503 に答える
3

印刷する必要があり、改行が必要ない場合は、次を使用できます。

printf $(md5sum filename)
于 2016-09-15T05:16:15.857 に答える
3
md5=$(md5sum < $file | tr -d ' -')
于 2010-09-10T15:46:02.653 に答える
2
md5=`md5sum ${my_iso_file} | cut -b-32`
于 2010-09-09T18:14:26.070 に答える
1

md5sumファイル名にバックスラッシュがある場合、ハッシュの前にバックスラッシュを置きます。最初の 32 文字または最初のスペースより前の文字は、適切なハッシュではない可能性があります。

標準入力-を使用している場合は発生しない (ファイル名は.| tail -c 32

于 2016-12-30T12:29:05.520 に答える
0

完全を期すために、正規表現とキャプチャ グループを使用した sed の方法:

md5=$(md5sum "${my_iso_file}" | sed -r 's:\\*([^ ]*).*:\1:')

正規表現は、スペースに到達するまでグループ内のすべてをキャプチャしています。キャプチャ グループを機能させるには、すべてを sed にキャプチャする必要があります。

(sed とキャプチャ グループの詳細については、こちら: sed でキャプチャされたグループのみを出力するにはどうすればよいですか? )

sed の区切り文字として、ファイル パスでは有効ではなく、ファイル パスのスラッシュをエスケープする必要がないため、コロンを使用します。

于 2019-05-17T08:50:50.763 に答える
-3

別の方法:

md5=$(md5sum ${my_iso_file} | sed '/ .*//' )
于 2010-09-09T18:23:42.603 に答える
-3
md5=$(md5sum < index.html | head -c -4)
于 2010-09-09T19:49:16.580 に答える