[bash] 파일 이름없이 md5sum을 사용하여 해시 값만 가져옵니다.

md5sum을 사용하여 파일의 해시 값을 생성합니다. 그러나 파일 이름이 아닌 해시 값만 수신하면됩니다.

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

3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso

파일 이름을 ‘스트립’하고 값만 유지하려면 어떻게해야합니까?



답변

또 다른 방법 🙂

md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`


답변

간단한 배열 할당이 작동합니다 … 배열의 첫 번째 요소 는 인덱스 없이 bash만 처리 할 수 ​​있습니다 . 즉, md5sum의 32 자만 포함합니다. name[0]$md5

md5=($(md5sum file))
echo $md5
# 53c8fdfcbb60cf8e1a1ee90601cc8fe2


답변

cut공백으로 줄을 나누고 첫 번째 필드 만 반환 하는 데 사용할 수 있습니다 .

md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)


답변

Mac OS X의 경우 :

md5 -q file


답변

md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"


답변

일방 통행:

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

또 다른 방법:

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

또 다른 방법:

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

(백 슬래시가 너무 용감하고 훌륭하지 않으면 백틱으로 시도하지 마십시오.)

다른 솔루션에 비해이 솔루션의 장점은 단지 호출하는 것입니다 md5sum오히려 같은 다른 프로그램보다, 쉘 awk또는 sed. 이것이 실제로 중요한지 여부는 별도의 질문입니다. 당신은 아마 그 차이를 알아 차리기 힘들 것입니다.


답변

다른 방법은 다음과 같습니다.

md5sum filename |cut -f 1 -d " "

잘라내 기는 각 공간으로 줄을 나누고 첫 번째 필드 만 반환합니다.