#!/usr/bin/env bash
#
# disk-report.sh —— 磁盘占用速览
#
# 用途：快速查看指定目录下谁最占空间，只读操作，不修改任何文件。
# 用法：./disk-report.sh [目录路径] [显示条数]
#
set -euo pipefail

TARGET_DIR="${1:-.}"
TOP_N="${2:-10}"

# 参数校验：目录必须存在
if [[ ! -d "$TARGET_DIR" ]]; then
    echo "错误：目录不存在 —— $TARGET_DIR" >&2
    exit 1
fi

# 参数校验：显示条数必须是正整数
if ! [[ "$TOP_N" =~ ^[0-9]+$ ]] || [[ "$TOP_N" -lt 1 ]]; then
    echo "错误：显示条数必须是正整数 —— $TOP_N" >&2
    exit 1
fi

echo "=============================================="
echo " 磁盘占用报告"
echo " 目标目录：$(cd "$TARGET_DIR" && pwd)"
echo " 生成时间：$(date '+%Y-%m-%d %H:%M:%S')"
echo "=============================================="
echo

echo "【总览】"
df -h "$TARGET_DIR" | awk 'NR==1 {print "文件系统      容量   已用   可用  使用率"} NR==2 {printf "%-12s %6s %6s %6s %6s\n", $1, $2, $3, $4, $5}'
echo

echo "【占用最多的 ${TOP_N} 个子目录】"
du -h -d 1 "$TARGET_DIR" 2>/dev/null \
    | sort -rh \
    | head -n $((TOP_N + 1)) \
    | tail -n +2 \
    | awk -F'\t' '{printf "%10s  %s\n", $1, $2}'

echo
echo "提示：想看更深的层级，把 du 的 -d 1 改成 -d 2 或 -d 3。"
