web-dev-qa-db-ja.com

ファイル名を含まないmd5ファイルでチェックサムにmd5sumを使用する方法

Test.txtとtest.txt.md5の2つのファイルがあります。 test.txtのチェックサムを確認したいと思います。

Gnuツールmd5sumには、「[md5-hash] [space] [space] [filename]」(md5sum -c test.txt.md5)の形式のmd5ファイルが必要です。残念ながら、私のtest.txt.md5にはmd5ハッシュのみが含まれています(スペースとファイル名は含まれていません)。

「test.txt.md5」ファイルから「md5sum-c」コマンドにハッシュを渡すにはどうすればよいですか?私は標準入力を使用する必要があると思いますが、私が見たすべての例はmd5sumファイル形式を再作成しようとします

ファイルの内容は次のとおりです。

test.txt

test

およびtest.txt.md5

d8e8fca2dc0f896fd7cb4cb0031ba249
3
Kostas

多くのコマンドと同様に、オプションの値がmd5sum-から)の場合、man md5sumは標準入力から読み取る機能があります。

MD5(128ビット)チェックサムを印刷またはチェックします。 FILEがない場合、またはFILEが-の場合、標準入力を読み取ります

ファイル名がわかっているので、md5ファイルの内容、いくつかのスペース、そして名前を出力して、それをmd5sumに渡すことができます。

$ cat test.txt.md5 
5a6d311c0d8f6d1dd03c1c129061d3b1
$ md5sum -c <(printf "%s  test.txt\n" $(cat test.txt.md5)) 
test.txt: OK

別のオプションは、ファイル名をファイルに追加することです。

$ sed -i  's/$/  test.txt/' test.txt.md5
$ md5sum -c test.txt.md5 
test.txt: OK
3
terdon

ファイルのMD5チェックサムを再計算して、test.txt.md5に保存されているものと比較できます。

cmp test.txt.md5 <(md5sum test.txt | cut -d\  -f1)

出力がない場合、チェックサムは一致します。

2
Stephen Kitt