모든 파일에 대한 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 합계이지만 파일 이름은 없습니다.

관련 정보