압축되지 않은 zip에 필요한 공간을 확인하는 방법

압축되지 않은 zip에 필요한 공간을 확인하는 방법

(매우 긴) zip 파일 목록이 주어지면 압축이 풀린 크기를 어떻게 알 수 있나요?

답변1

unzip -Zt zipname이를 사용하여 아카이브 내용 요약과 전체 크기를 직접 인쇄할 수 있습니다 . 다음은 출력의 예입니다.

unzip -Zt a.zip
1 file, 14956 bytes uncompressed, 3524 bytes compressed:  76.4%

그런 다음 awk를 사용하여 바이트 수를 추출할 수 있습니다.

unzip -Zt a.zip | awk '{print $3}'
14956

마지막으로 Tom의 답변에 표시된 대로 for 루프에 넣습니다.

total=0
for file in *.zip; do # or whichever files you want
    (( total += $(unzip -Zt $file |awk '{ print $3 }') ))
done
echo $total

답변2

이것을 입력하면 unzip -l <zipfile>압축되지 않은 크기와 모든 파일의 압축되지 않은 총 크기를 포함하여 zip에 있는 파일 목록이 인쇄됩니다.

이는 사람이 읽을 수 있는 출력이지만 unzip -l <zipfile> | tail -n1 | awk '{ print $1 }'.

전체 크기를 얻으려면 다음을 수행하십시오.

total=0
for file in *.zip; do # or whichever files you want
    (( total += $(unzip -l $file | tail -n1 | awk '{ print $1 }') ))
done
echo $total

답변3

unzip -l각 파일의 크기를 나열하고 마지막 줄과 그 합계를 인쇄합니다. 따라서 zip 파일을 반복해서 볼 수 있고출력을 더하세요.unzip -l "$zip" | awk 'END {print $1}'또는unzip -Zt "$zip" | awk 'END {print $3}'. 쉘 루프의 경우 unzip -Zt조금 더 빠를 수 있습니다.

total=0
for z in *.zip; do
  set $(unzip -Zt -- "$z")
  total=$((total + $3))
done

이는 파일의 전체 크기만 알려줍니다. 각 파일에는 작은 오버헤드가 있습니다. 이름을 저장할 공간, 일부 메타데이터를 저장할 공간, 그리고 대부분의 파일 시스템이 파일을 블록 단위로 할당하기 때문에 일부 사용되지 않은 공간도 있을 수 있습니다. 일반적인 파일 시스템에서는 오버헤드가 몇 킬로바이트에 이를 수 있습니다. 오버헤드는 파일 크기, 디렉터리 구조(디렉터리 오버헤드로 인해) 및 여러 개의 작은 파일을 동일한 블록으로 병합하는 파일 시스템의 기능에 따라 달라지므로 완전히 예측할 수는 없습니다.

대부분의 파일이 몇 킬로바이트를 초과하는 경우에는 이에 대해 걱정하지 마십시오. 그러나 파일이 매우 작은 경우 오버헤드를 고려해야 할 수도 있습니다. 다시 말하지만, 오버헤드는 파일 시스템에 따라 다릅니다. ext4에서 각 파일은 전체 블록(대부분의 시스템에서 기본적으로 4kB)을 채웁니다. 다음 스크립트는 각 파일을 4kB로 반올림하고 파일 이름 길이에 몇 바이트를 더하여 총 크기를 추정합니다.

for z in *.zip; do
  unzip -l -- "$z"
done | awk '
    $2 ~ /^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$/ {total += ($1+4095)/4096*4096 + length($0)}
    END {print total}
'

답변4

보세요, 엄마, 루프가 없어요!

루프를 사용하지 않지만 여전히 동일한 답을 얻기 때문에 약간 더 빠를 수 있는 또 다른 솔루션이 있습니다.

unzip -l \*.zip|awk 'BEGIN{total=0}/        [0-9]+ files/{total=total+$1;}END{print "total bytes: "total}'

"BEGIN{total=0}" 부분은 꼭 필요한 것은 아닙니다.

관련 정보