inital commit

This commit is contained in:
2026-03-23 23:50:58 +00:00
commit 503c232b30
110 changed files with 7218 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
#autoload
biggest() {
emulate -L zsh
setopt pipe_fail
local count=20
local pattern='*'
# Option parsing
while [[ $# -gt 0 ]]; do
case "$1" in
-n|--number)
count="$2"
shift 2
;;
-p|--pattern)
pattern="$2"
shift 2
;;
-h|--help)
cat <<'EOF'
Usage: biggest [-n COUNT | --number COUNT] [-p PATTERN | --pattern PATTERN]
-n, --number Number of entries to show (default: 20)
-p, --pattern Glob-style pattern to match names (default: *)
-h, --help Show this help and exit
The command scans up to three directory levels below the current
directory, includes hidden files and directories, and prints the
largest files/directories sorted by size. Sizes are sorted using
du -sk (numeric) and displayed using du -sh (human-readable).
EOF
return 0
;;
--)
shift
break
;;
-*)
print -u2 "biggest: unknown option: $1"
return 1
;;
*)
# Ignore unexpected positional args for now
break
;;
esac
done
# Validate count
if ! [[ "$count" == <-> ]]; then
print -u2 "biggest: COUNT must be a positive integer"
return 1
fi
# Core logic: depth 1–3, files and dirs, include hidden, suppress errors
find . -mindepth 1 -maxdepth 3 -name "$pattern" -print0 2>/dev/null \
| xargs -0 -n 100 du -sk 2>/dev/null \
| sort -nr \
| head -n "$count" \
| cut -f2- \
| tr '\n' '\0' \
| xargs -0 -I{} du -sh "{}" 2>/dev/null \
| awk '{
size=$1
$1=""
sub(/^ /,"")
# green size, blue path
printf "\033[1;32m%-8s\033[0m \033[1;34m%s\033[0m\n", size, $0
}'
}