countbytes: make the output human-readable
authorgit <redacted>
Wed, 13 May 2026 12:57:32 +0000 (08:57 -0400)
committergit <redacted>
Wed, 13 May 2026 12:57:32 +0000 (08:57 -0400)
countbytes

index 07793dd490ec213ae2d6c0e828d6297241b0019f..b6b77921ba45c3263f574074f73761daeb005bec 100755 (executable)
@@ -12,4 +12,4 @@ err() {
 # there's no way for only one printf to fail
 [ -z "$SERVER" ] && SERVER=$(which > /dev/null 2>&1 apache2 && printf "apache2" || which > /dev/null 2>&1 nginx && printf "nginx" || err)
 
-{ cat /var/log/"$SERVER"/access.log /var/log/"$SERVER"/access.log.1; gzip -cd $(ls /var/log/"$SERVER"/access.log.*.gz | sort -V); } | grep -a "$@" | awk 'match($0, /\" [0-9]{3} [0-9]+ \"/) { matchp = substr($0, RSTART, RLENGTH); split(matchp, nums, " "); n+=nums[3] } END {print n}'
+{ cat /var/log/"$SERVER"/access.log /var/log/"$SERVER"/access.log.1; gzip -cd $(ls /var/log/"$SERVER"/access.log.*.gz | sort -V); } | grep -a "$@" | awk 'match($0, /\" [0-9]{3} [0-9]+ \"/) { matchp = substr($0, RSTART, RLENGTH); split(matchp, nums, " "); n+=nums[3] } END { y=0; split("B K M G T", units); while (n >= 1024 && y < 4) { n /= 1024; y++; } if (y == 0) { print n } else if (n < 10) {printf "%.1f%c\n", n, units[y+1] } else { printf "%d%c\n", n, units[y+1]} }'