파일 이름 없이 md5sum을 사용하여 해시 값만 가져옵니다.
md5sum을 사용하여 파일의 해시 값을 생성합니다.하지만 저는 파일 이름이 아닌 해시 값만 받으면 됩니다.
md5=`md5sum ${my_iso_file}`
echo ${md5}
출력:
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
파일 이름을 '삭제'하고 값만 유지하려면 어떻게 해야 합니까?
간단한 어레이 할당이 작동합니다...Bash 어레이의 첫 번째 요소는 다음과 같이 처리할 수 있습니다.name을 제외하고[0]색인, 즉,$md5에는 md5sum의 32자만 포함됩니다.
md5=($(md5sum file))
echo $md5
# 53c8fdfcbb60cf8e1a1ee90601cc8fe2
AWK 사용:
md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`
를 사용하여 줄을 공백으로 분할하고 첫 번째 필드만 반환할 수 있습니다.
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}"
또 다른 방법은 다음과 같습니다.
md5sum filename | cut -f 1 -d " "
자르기를 선택하면 줄이 각 공백으로 분할되고 첫 번째 필드만 반환합니다.
기대어head:
md5_for_file=`md5sum ${my_iso_file}|head -c 32`
인쇄해야 하고 새 줄이 필요하지 않은 경우 다음을 사용할 수 있습니다.
printf $(md5sum filename)
한 가지 방법:
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그것이 실제로 중요한지 여부는 별개의 질문입니다. 여러분은 아마도 그 차이를 알아차리기 어려울 것입니다.
md5=$(md5sum < $file | tr -d ' -')
md5=`md5sum ${my_iso_file} | cut -b-32`
md5sum파일 이름에 백슬래시가 있는 경우 해시 앞에 백슬래시를 넣습니다.첫 번째 공백 앞의 32자 또는 그 밖의 문자는 올바른 해시가 아닐 수 있습니다.
표준 입력을 사용할 때는 발생하지 않습니다(파일 이름은 단지-), 그래서 픽셀비트의 대답은 효과가 있을 것이지만, 다른 많은 사람들은 다음과 같은 것을 추가해야 할 것입니다.| tail -c 32.
잘못된 파일 이름이 걱정되는 경우:
md5sum < "${file_name}" | awk NF=1
f244e67ca3e71fff91cdf9b8bd3aa7a5
이 문제를 처리하기 위한 다른 더 지저분한 방법:
md5sum "${file_name}" | awk NF=NF OFS= FS=' .*$' or | awk '_{ exit }++_' RS=' '
f244e67ca3e71fff91cdf9b8bd3aa7a5
그것을 완전히 내부에서 하기 위해.awk:
mawk 'BEGIN { __ = ARGV[ --ARGC ] _ = sprintf("%c",(_+=(_^=_<_)+_)^_+_*++_) RS = FS gsub(_,"&\\\\&",__) ( _=" md5sum < "((_)(__)_) ) | getline print $(_*close(_)) }' "${file_name}"
f244e67ca3e71fff91cdf9b8bd3aa7a5
음, 오늘도 같은 문제가 있었지만, 실행할 때 MD5 해시 파일을 가져오려고 했습니다.find지휘권
저는 가장 많은 투표를 받은 질문을 받아 라는 기능으로 포장했습니다.md5선거에 출마하는find지휘권저의 임무는 폴더에 있는 모든 파일에 대한 해시를 계산하고 출력하는 것이었습니다.hash:filename.
md5() { md5sum $1 | awk '{ printf "%s",$1 }'; }
export -f md5
find -type f -exec bash -c 'md5 "$0"' {} \; -exec echo -n ':' \; -print
그래서, 저는 여기서 몇 개의 조각과 리눅스의 'find-exec' 셸 함수로부터도 얻었습니다.
완전성을 위해 정규식과 캡처 그룹을 사용하는 sed 방법:
md5=$(md5sum "${my_iso_file}" | sed -r 's:\\*([^ ]*).*:\1:')
정규식은 공백에 도달할 때까지 그룹의 모든 항목을 캡처하는 것입니다.캡처 그룹을 작동시키려면 sed에 있는 모든 것을 캡처해야 합니다.
sed 및 capture 그룹에 대한 자세한 내용은 여기를 참조하십시오.sed로 캡처된 그룹만 출력하려면 어떻게 해야 합니까?)
구분 기호가 sed인 것처럼 콜론은 파일 경로에서 유효하지 않고 파일 경로의 슬래시를 벗어날 필요가 없기 때문에 사용합니다.
다른 방법:
md5=$(md5sum ${my_iso_file} | sed '/ .*//' )
md5=$(md5sum < index.html | head -c -4)
언급URL : https://stackoverflow.com/questions/3679296/only-get-hash-value-using-md5sum-without-filename
'codememo' 카테고리의 다른 글
| Bash에서 명령어의 단일 따옴표 내 변수 확장 (0) | 2023.05.18 |
|---|---|
| 사용자 변수와 시스템 변수의 차이점은 무엇입니까? (0) | 2023.05.18 |
| SQL Server 연결을 프로그래밍 방식으로 테스트하는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.18 |
| 공유 코드 프로젝트(.shproj)를 생성하는 방법 (0) | 2023.05.18 |
| RxJs 5에서 Angular Http 네트워크 호출의 결과를 공유하는 올바른 방법은 무엇입니까? (0) | 2023.05.18 |