From b87cf2252a5cdef449284bac816a727a8550afc0 Mon Sep 17 00:00:00 2001 From: Sandor Semsey Date: Sat, 26 Aug 2023 01:34:41 +0200 Subject: [PATCH] lib/analytics: anal-disk-usage report percentage also --- docs/lib/analytics.md | 3 ++- lib/analytics.sh | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/lib/analytics.md b/docs/lib/analytics.md index 32f9bd6..d447705 100644 --- a/docs/lib/analytics.md +++ b/docs/lib/analytics.md @@ -6,7 +6,8 @@ Functions for statistics and analysis. ## anal-disk-usage -Analyze disk usage. Prints the total disk space used by each sub-directory in any directory in ascending order. +Analyze disk usage. Prints the disk space used by each sub-directory in any directory in ascending order. +Also reports how many percent each sub-directory's size takes up in total size. **Usage** diff --git a/lib/analytics.sh b/lib/analytics.sh index c58404a..e87c466 100644 --- a/lib/analytics.sh +++ b/lib/analytics.sh @@ -10,9 +10,15 @@ ## @param $1 Dir to check ## @default Current working dir #################################### +# shellcheck disable=SC2312 anal-disk-usage() { local dir="${1:-.}" - shift - # shellcheck disable=SC2312 - du "${dir}" -hd1 "${@}" 2>/dev/null | sort -h + local total size dir + + total=$(du --summarize --block-size=1 "${dir}" | cut -f1) + + while IFS= read -r -d '' line; do + read -r size dir <<<"${line}" + printf "%3d%% %8s %s\n" "$((size * 100 / total))" "$(numfmt --to=iec "${size}")" "${dir}" + done < <(du --null --block-size=1 -d1 "${dir}" 2>/dev/null | sort -nz) }