You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Windows 10/Debian命令行工具:按指定子文件夹大小排序父文件夹

Windows 10/Debian命令行工具:按指定子文件夹大小排序父文件夹

嘿,刚好我之前帮朋友处理过类似的mod文件夹排序需求,给你分别整理Windows 10和Debian下的命令行解决方案,完全匹配你的场景——不管mod有没有sounds子文件夹、里面是空的还是嵌套多层子目录,都能准确计算总大小并排序输出。


Windows 10 解决方案(用PowerShell,系统自带无需额外安装)

先打开PowerShell,切换到SteamWorkshop/GameID这个目录(比如用cd D:\SteamWorkshop\12345这样的命令),然后直接运行下面的脚本:

Get-ChildItem -Directory | ForEach-Object {
    $soundDir = Join-Path $_.FullName "sounds"
    $totalSize = if (Test-Path $soundDir -PathType Container) {
        # 递归计算sounds文件夹下所有文件的总大小
        (Get-ChildItem $soundDir -Recurse -File | Measure-Object -Property Length -Sum).Sum
    } else {
        # 没有sounds文件夹就设为0
        0
    }
    # 把结果封装成易读的对象
    [PSCustomObject]@{
        Mod名称 = $_.Name
        Sounds大小(MB) = [math]::Round($totalSize / 1MB, 3)
    }
} | Sort-Object -Property "Sounds大小(MB)" -Descending | Format-Table -AutoSize

关键点说明:

  • Get-ChildItem -Directory:只抓取当前目录下的mod父文件夹(就是mod1、mod2这些)
  • 自动判断sounds文件夹是否存在,不存在就直接记为0大小
  • 递归遍历sounds里的所有嵌套子目录和文件,精准统计总大小
  • 最后按大小从大到小排序,用表格格式输出,清晰直观
  • 如果要把结果保存到文本文件,就在命令最后加 | Out-File "mod_sound_sizes.txt"

Debian(Linux)解决方案(用Bash,系统自带)

打开终端,切换到目标目录(比如cd ~/SteamWorkshop/GameID),运行下面的单行命令:

for dir in */; do
    mod_name="${dir%/}"
    sound_dir="$mod_name/sounds"
    if [ -d "$sound_dir" ]; then
        # 用du命令递归计算sounds的总字节数
        total_size=$(du -sb "$sound_dir" | cut -f1)
    else
        total_size=0
    fi
    echo "$total_size $mod_name"
done | sort -nr | awk '{printf "%s sounds: %.3fMB\n", $2, $1/1024/1024}'

关键点说明:

  • for dir in */;:遍历当前目录下所有子文件夹
  • du -sb:精准计算目标文件夹的总大小(-s是汇总,-b是按字节统计,避免不同系统的单位差异)
  • sort -nr:按总字节数倒序排序(数字从大到小)
  • awk负责把字节转成MB并保留三位小数,输出成你想要的格式
  • 空的sounds文件夹也会被识别为0大小,自动排在末尾

备注:内容来源于stack exchange,提问作者wololoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:35:33