파일당 md5sum(LL 포함)

파일당 md5sum(LL 포함)

나는 다음과 같은 출력을 원합니다: name sizehash:

myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646

오직 내가 가지고 있는 name것은size

ll -h | awk '{print $9,$10,$11,$12,$5}'

그런데 각 파일을 어떻게 얻을 수 있나요 hash? 나는 시도했다:

ll -h | awk '{print $9,$10,$11,$12,$5}' | md5sum

하지만 해시 값만 얻습니다.

답변1

ls를 구문 분석하면 안 됩니다., 대신 다음을 사용하세요.

for f in * .*; do
  [ -f "$f" ] && \
    printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
  • for루프는 현재 디렉터리의 모든 파일과 디렉터리를 반복합니다.
    • [ -f "$f" ]일반 파일인지 확인하세요.
    • printf "%s %s %s\n"원하는 형식으로 매개변수를 인쇄합니다.
    • "$f"첫 번째 매개변수는 파일 이름입니다.
    • du -h -- "$f" | cut -f1두 번째는 크기(사람이 읽을 수 있음)이지만 파일 이름은 아닙니다. cut첫 번째 필드를 제외한 모든 항목을 제거합니다.
    • md5sum -- "$f" | cut -d' ' -f1세 번째는 MD5 합계이지만 파일 이름은 없습니다.

관련 정보