md5sum을 사용하여 파일 이름이 포함되지 않은 md5 파일을 체크섬하는 방법

md5sum을 사용하여 파일 이름이 포함되지 않은 md5 파일을 체크섬하는 방법

test.txt와 test.txt.md5라는 두 개의 파일이 있습니다. test.txt의 체크섬을 확인하고 싶습니다.

Gnu 도구 md5sum에는 "[md5-hash][space][space][filename]"(md5sum -c test.txt.md5) 형식의 md5 파일이 필요합니다. 불행하게도 내 test.txt.md5에는 md5 해시만 포함되어 있습니다(공백과 파일 이름 없음).

"test.txt.md5" 파일의 해시를 "md5sum -c" 명령으로 전달하는 방법은 무엇입니까? stdin을 사용해야 할 것 같지만 내가 본 모든 예제는 md5sum 파일 형식을 다시 만들려고 시도했습니다.

파일 내용은 다음과 같습니다.

test.txt:

test

그리고 test.txt.md5:

d8e8fca2dc0f896fd7cb4cb0031ba249

답변1

많은 명령과 마찬가지로 옵션 값이 (from )인 경우 md5sum표준 입력에서 읽을 수 있습니다.-man md5sum

MD5(128비트) 체크섬을 인쇄하거나 확인합니다. 파일이 없거나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

답변2

파일의 MD5 체크섬을 다시 계산하여 다음에 저장된 체크섬과 비교할 수 있습니다 test.txt.md5.

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

출력이 없으면 체크섬이 일치합니다.

관련 정보