average-relative.nix (709B)
1 { pkgs, ... }: 2 3 let 4 average-relative = pkgs.writeShellScriptBin "average-relative" '' 5 dir="''${1:-.}" 6 if [[ ! -d "$dir" ]]; then 7 echo "Not a directory: $dir" >&2 8 exit 1 9 fi 10 shopt -s nullglob 11 for i in "$dir"/*/; do 12 i="''${i%/}" 13 size=$(du -sk "$i" | awk '{print $1}') 14 count=$(find "$i" -type f -size +1M | wc -l) 15 (( count == 0 )) && continue 16 echo "$((size / count)) $count $size ''${i##*/}" 17 done | sort -nr | numfmt -d ' ' --field=1,3 --from-unit=1024 --to=iec --suffix=B | 18 while read -r avg count total name; do 19 printf '%8s %7s %8s %s\n' "$avg" "$count" "$total" "$name" 20 done 21 ''; 22 in 23 { 24 environment.systemPackages = [ average-relative ]; 25 }