Add percentage of max to tdu
authorSiraaj Khandkar <siraaj@khandkar.net>
Wed, 17 Feb 2021 13:24:24 +0000 (08:24 -0500)
committerSiraaj Khandkar <siraaj@khandkar.net>
Wed, 17 Feb 2021 13:24:24 +0000 (08:24 -0500)
home/lib/login_functions.sh

index 042ea60..8e25bc0 100644 (file)
@@ -140,16 +140,29 @@ top_commands() {
 # TODO: Consider using numfmt instead of awk
 tdu() {
     du "$1" \
-    | sort -n -k 1 \
-    | tail -50 \
     | awk '
         {
             size = $1
             path = $0
             sub("^" $1 "\t+", "", path)
-            gb = size / 1024 / 1024
-            printf("%f\t%s\n", gb, path)
-        }'
+            paths[path] = size
+            if (size > max)
+                max = size
+        }
+
+        END {
+            for (path in paths) {
+                size = paths[path]
+                pct = 100 * (size / max)
+                gb = size / 1024 / 1024
+                printf("%6.2f %3d%% %s\n", gb, pct, path)
+            }
+        }
+    ' \
+    | sort -r -n -k 1 \
+    | head -50 \
+    | tac
+    # A slight optimization: head can exit before traversing the full input.
 }
 
 # Top Disk-Using Files
This page took 0.019352 seconds and 4 git commands to generate.