恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Mac系统数据爆满?ncdu磁盘占用分析与清理实战
首页
资讯中心
/
Mac系统数据爆满?ncdu磁盘占用分析与清理实战
Mac系统数据爆满?ncdu磁盘占用分析与清理实战
发布时间:2026/9/17 19:50:17
关于本机里那个系统数据是我见过最会藏东西的分类。上周帮朋友收拾他那台 256G 的 MacBook Air储存空间里系统数据一栏写着 187GB可用空间剩 3GB微信一打开就提示磁盘空间不足。他把侧边栏里能看见的文件夹全加了一遍加起来不到 80G剩下的 100 多个 G 就跟蒸发了一样。后来我用 mac 磁盘大小统计工具 ncdu 扫了一遍三十秒出结果键盘按了几下就定位到两个大头一个 60GB 的 Xcode 编译缓存一个 40GB 的 iPhone 本机备份。这两个东西在访达里默认都不显示在储存空间那张饼图里也被统统计进了系统数据。这篇东西就是把这个过程完整写下来。ncdu 是什么、为什么我在 Mac 上说它没有之一、怎么装、怎么扫、扫出来的一堆目录哪些能删哪些不能碰、哪些占用它根本扫不到以及在什么场景下它的确不如图形化工具。不管你是被系统数据搞懵的普通用户还是天天和构建产物打交道的 iOS/后端开发者或者手里管着几台机器的运维这套流程都能直接照搬。1. 访达和储存空间说不清磁盘去哪了问题出在分类逻辑1.1 关于本机 - 储存空间那张饼图是按文件类型算的很多人第一次用 Mac 都会踩这个坑点开储存空间看到文稿应用照片系统数据这些分类下意识以为它们是四个文件夹。不是。macOS 这套分类走的是文件类型和统一类型标识符UTI的判断逻辑它扫描磁盘上的文件根据扩展名、UTI 以及文件所在的路径把它塞进预定义的几个桶里。照片进照片应用包进应用能识别出属于某个用户文档的进文稿。那识别不出来或者不方便归类的呢全部扔进系统数据。所以系统数据不是一个真实存在的目录它是一个兜底分类本质上是系统在说这些东西我懒得管。日志、缓存、模拟器镜像、第三方应用的 Application Support、虚拟机磁盘映像、容器镜像、iOS 备份、本地快照全都在里面。你不可能在访达里找到一个叫系统数据的文件夹因为它在磁盘上根本不存在。这就解释了一个很反直觉的现象你在访达里把所有文件夹的显示简介加起来得到的数字永远对不上饼图。因为访达默认不显示隐藏目录而用户目录下的~/Library就是一个隐藏目录这里恰恰是大户聚集地。一个用了三年的 Mac~/Library占到 50G 以上是家常便饭但绝大多数人从来没打开过它。1.2 可清除空间和 APFS 快照真正看不见的那部分比分类逻辑更让人困惑的是可清除空间。你会发现一件怪事明明只剩 5GB 可用空间往桌面拷一个 20GB 的镜像居然成功了。这不是系统算错了而是因为可清除空间会被系统在需要时自动腾出来。可清除空间大致包括三类东西。第一类是 iCloud 云盘的优化 Mac 储存空间留下的占位符文件图标在内容还在云端点开才下载。第二类是各类缓存系统认为随时可以丢。第三类也是量最大的一类是 APFS 本地快照。APFS 是写时复制Copy-on-Write的文件系统。快照创建的那一刻它并不复制数据只是记录了一份元数据引用。之后你修改文件旧的数据块因为还被快照引用着所以不能释放新数据写到新的块上。时间机器开启后系统会在本地自动生成这些快照通常一天若干个保留 24 小时左右。这意味着你昨天删掉的 30GB 文件今天可能还实实在在地占着盘。查快照的命令是tmutil listlocalsnapshots /这会列出所有本地快照的时间戳。看 APFS 容器整体情况用diskutil apfs list里面能看到每个卷的快照数量和容量信息。知道这两个命令的存在很重要因为它能解释很多我明明删了为什么空间没变的疑惑也能解释为什么 ncdu 扫出来的数字和你期待的差了一截——ncdu 走的是文件系统目录树它看不到被快照单独引用的那些共享数据块。1.3 找空间这件事本质上一棵树一层层往下钻磁盘占用在结构上是一棵树。根目录下有若干大分支每个大分支下有子分支一直分到文件。你要找的是最粗的那根枝条而最有效的办法就是笨办法每一层都按大小排序看谁最大进到最大的那个里面重复。du -sh * | sort -h能实现这个过程我自己也用了很多年。但它有两个硬伤一是每次换目录都要重新敲一遍命令二是它只给你一个静态结果你想知道某个 20GB 的目录里面到底是什么得再敲一次命令。图形化工具在这一点上走了另一个极端它们给你一张漂亮的环形图或者方块图哪一个色块大一眼就能看到但色块和真实路径之间隔了一层——你知道这里有个 30G 的东西但不确定它是不是你电脑上唯一一份删起来没有安全感。ncdu 的解法很朴素保留完整的目录树和路径把du的结果攒在内存里不丢然后给你一个能用方向键移动的光标。你看到的每一行都是路径 大小排序永远按大小来回车进去左方向键退出来三层五层下去就能精确到具体文件。这就是它在 Mac 上一直没被替代的原因不是因为它功能多而是因为它做的事情刚刚好没有多余的一层抽象。2. ncdu 敢说没有之一靠的是三件很硬的事2.1 一次扫描只保留聚合信息快而且不吃内存ncdu 全称是 NCurses Disk Usage最早的版本是 C 写的现在的 2.x 系列用 Zig 重写了一遍Homebrew 里brew install ncdu装到的就是 2.x。它扫描的机制很简单从指定目录开始递归遍历对每个文件做一次lstat系统调用拿到大小和元数据然后在内存里把这棵树建起来。关键在于它只保留目录级别的聚合值和每个文件条目的大小不读文件内容不计算校验和不做任何多余的事。所以扫描速度基本等于你磁盘的随机读性能上限在 SSD 上每秒几万到十几万个文件是很常见的量级。内存占用方面百万文件量级的目录树通常也就占几十到一两百 MB扫完关闭就释放没有任何常驻进程。和图形化工具对比一下就很明显了。图形化工具为了画那张图要额外算色块面积、做布局计算、渲染扫描阶段往往还要读一遍 inode 再读一遍目录甚至要申请完全磁盘访问权限后重新扫一次。我实测过同一台机器扫用户目录DaisyDisk 大概两分钟左右出图ncdu 十几秒而且 ncdu 不会在扫的过程中让你等动画。另外它是个单文件二进制装完就是一个可执行文件没有后台守护进程没有菜单栏图标不申请辅助功能权限不常驻。对一个一年用五次、每次用五分钟的工具来说这是最合适的形态。2.2 键盘就是全部交互几个键位记熟就够了ncdu 所有的交互都在键盘上。第一次打开会觉得界面过于朴素但把下面这组键位记熟效率比鼠标点图形界面高得多。按键作用↑↓或kj上下移动光标→或Enter进入选中的目录←返回上一级d删除选中项会弹确认可以勾多个一起删g切换大小显示方式条形图 / 百分比 / 图形a切换表观大小和磁盘占用两种口径nsCM分别按名称、大小、子项数量、修改时间排序i查看选中项的详细信息完整路径、大小、inode、硬链接数、修改时间e显示或隐藏排除项和被排除的目录r重新计算当前目录q退出这里必须单独说一下a键切换的两种口径因为很多人被这两个数字搞晕过。表观大小apparent size是文件逻辑上的字节数磁盘占用disk usage是它在磁盘上实际占的块数。APFS 的块通常是 4096 字节所以一个 100 字节的小文件表观大小是 100B磁盘占用是 4KB。反过来稀疏文件、APFS 克隆文件、带压缩的文件磁盘占用可能远小于表观大小。这直接影响你的判断。比如~/Library下面有几万个小文件按表观大小看可能只有几个 G按磁盘占用看可能翻倍。清理缓存这种小文件海场景看磁盘占用更有意义判断一个视频文件是不是真的大看表观大小更直观。我的习惯是默认看磁盘占用确认具体文件时按一下a对照。2.3 导出和导入把一次扫描变成可以归档的体检报告这个是 ncdu 被严重低估的功能。-o可以把扫描结果导出成一个文件-f可以把这个文件重新加载回界面里浏览。# 后台把整个根目录扫一遍结果写到 /tmp 下的文件里 sudo ncdu -x -o /tmp/root-scan.json / # 之后随时离线打开这份结果不会再碰磁盘 ncdu -f /tmp/root-scan.json这个用法解决了好几个实际问题。第一扫一个几十 TB 的外接阵列可能要几十分钟你不想干等着那就挂后台扫扫完再看。第二你可以在性能强的机器上扫描、把结果文件拷到另一台机器上分析完全不产生额外 IO。第三也是我最常用的一点清理前导出一份清理后再导出一份两份对着看谁变大了谁变小了一目了然。这比感觉好像清理出空间了靠谱得多。需要注意版本兼容性。ncdu 1.x 的导出格式是自定义的二进制格式2.x 换成了 JSON。2.x 能读 1.x 导出的文件反过来不行。如果你是在一两台不同版本的机器之间传递扫描结果先确认一下ncdu --version。JSON 格式还有个额外好处你可以用jq之类的工具去解析做自动化统计比如定期扫描然后对比大目录的增长趋势。3. 从装到跑通Homebrew 装 ncdu 的完整路径和几个卡点3.1 装之前先确认命令行工具再决定路径在 Apple Silicon 的机器上Homebrew 默认装在/opt/homebrew在 Intel 机器上默认装在/usr/local。这个差异会影响到后面 PATH 的配置也是很多人装完了但是提示 command not found的根源。装 Homebrew 之前先确认 Xcode 命令行工具在不在因为编译和很多依赖都要用到它# 有输出说明已经装了 xcode-select -p # 没有的话装一下会弹窗跟着点就行 xcode-select --install然后跑 Homebrew 的官方安装脚本过程中会要求输入密码它需要创建目录和改权限/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)装完之后Apple Silicon 的机器上脚本会提示你把下面这行加到~/.zprofile里照做就行eval $(/opt/homebrew/bin/brew shellenv)加完执行source ~/.zprofile然后brew --version确认能跑起来。接下来就一条命令brew install ncdu ncdu --version如果你只是偶尔用一次不想为了它装整个 Homebrew也可以去 ncdu 的项目发布页下载对应架构的预编译二进制。Apple Silicon 要选 arm64 版本Intel 选 x86_64 版本。下载后解压、赋执行权限、丢到 PATH 里的某个目录比如/usr/local/bin或者~/bin就能用。这条路我在临时借来的机器上试过完全可行。3.2 装不上、装得慢的几种典型情况Homebrew 在国内的网络环境下第一次用经常遇到几个问题我基本都踩过。第一种卡在Updating Homebrew一直转圈。这是它在自动更新仓库第一次装或者很久没更新的时候很慢。临时跳过自动更新的办法是在命令前面加环境变量HOMEBREW_NO_AUTO_UPDATE1 brew install ncdu第二种git clone 阶段超时或者失败。可以考虑把 Homebrew 的仓库地址换成国内镜像源通过HOMEBREW_BREW_GIT_REMOTE和HOMEBREW_CORE_GIT_REMOTE两个环境变量指定写进~/.zshrc里就不用每次敲了。换源之后记得删掉旧的缓存目录重新初始化否则可能会读到半截的仓库。第三种权限报错典型信息是/usr/local或者/opt/homebrew目录归属不对。这种情况多半是之前用sudo装过东西导致一部分目录变成 root 所有。修复思路是把相关目录的归属改回当前用户但改之前先看清楚路径别对整个/usr/local无脑递归改权限有把系统依赖搞坏的风险。第四种公司配发的机器上装了终端安全软件curl 下载被拦、证书校验失败。这个不是技术问题得找 IT 放行对应域名别自己去绕过检测。第五种装完了ncdu提示找不到命令。九成是 PATH 没配echo $PATH看一眼有没有/opt/homebrew/bin没有就是shellenv那行没写对或者没生效。这种情况直接敲全路径/opt/homebrew/bin/ncdu也能验证它确实装上了。3.3 加不加 sudo扫出来的东西差一大截这个问题值得单独说因为很多人第一次扫的时候被满屏的红色提示吓到。不加sudo扫用户目录遇到自己没有读权限的目录会失败ncdu 会在界面里显示成cannot open directory的条目并且用不同的颜色标出来。加sudo之后权限全开能看到的东西完整得多但同时你也会扫到一堆不该碰的东西系统保护卷/System、交换文件所在的/private/var/vm、各种系统级日志、/dev下的设备节点。我的建议是这样分工扫描阶段用sudo加-x-x的作用是不要跨越文件系统边界它会跳过挂载的外接盘、网络卷、磁盘映像既加快了速度也避免把不相干的容量混进来。清理阶段只在用户目录动手也就是~/Library、~/Downloads、各种项目目录这些系统级的目录一律交给系统自己的维护机制处理。还有两个参数值得记住。--exclude可以在命令行里排除某个路径模式-X可以指定一个排除文件把一堆不想看的路径写进去。我自己的排除文件里常年写着几个大而明确的目录——正在做的大型项目、需要长期保留的资料库、备份盘挂载点。这两个参数配合使用能让每次扫描的结果干净很多不会每次都重复看到同样那几个不想动的目录。4. 实战把 200GB系统数据拆开看4.1 第一层先看整盘第二层直奔用户目录拿到一台空间告急的机器我的第一步不是直接开 ncdu 扫根目录而是先看整体情况和快照。df -h # 看总量和挂载点 tmutil listlocalsnapshots / # 看本地快照有多少个 diskutil apfs list # 看 APFS 容器和卷的分布df -h的输出里有个细节要注意/System/Volumes/Data这一行往往显示着最大的已用容量。这不是说系统卷占了这么多而是因为 APFS 把系统卷和数据卷分开了你的用户数据、应用、第三方文件都在数据卷上它挂载在/System/Volumes/Data而/Users实际上是指向它的 firmlink。所以你在 ncdu 里扫/会同时看到/Users和/System/Volumes/Data两条路径数字可能重复计算。正确做法是扫/System/Volumes/Data或者干脆扫用户目录~别被重复的数字误导。扫根目录的完整命令长这样sudo ncdu -x -o /tmp/root.json /第一次扫完通常会看到这么几个大分支/Users最大头通常是几十到几百 G、/Library系统级和第三方共享资源、/Applications应用本体、/private/var日志、数据库、交换文件、/optHomebrew 装的东西Apple Silicon 上在这。按大小排序光标停在最大的那个上回车就进去了。然后重点来了进到~按i看一眼完整路径再按s按大小排序你会看到一个叫Library的目录排在最前面。这就是访达里看不到的那个~/Library。所有好戏都在这里面。4.2 高频大户清单哪些能删、哪些别碰下面这张表是我这几年在不同机器上反复验证出来的。体积那一列是范围不同人的使用习惯差异很大。路径典型体积是什么处理方式风险~/Library/Developer/Xcode/DerivedData10-80G编译中间产物、索引缓存直接整个删低下次编译重建~/Library/Developer/CoreSimulator/Devices5-60G模拟器设备镜像xcrun simctl delete unavailable低~/Library/Developer/Xcode/iOS DeviceSupport5-50G真机调试符号文件删掉旧版本的低重新插真机会再生成~/Library/Application Support/MobileSync/Backup10-200GiPhone 本机备份在访达的备份管理里删中删了备份就没了~/Library/Caches5-50G各应用缓存挑着删别整个删中正在用的会重建~/Library/Containers10-100G沙盒应用的数据尽量在应用内清理高可能丢聊天记录~/.npm/_cacache、~/.yarn/cache1-20Gnpm/yarn 包缓存对应工具的清缓存命令低~/.gradle/caches、~/.m2/repository5-50GJava 构建缓存和依赖可以删会重新下载低~/.cache/huggingface10-200G模型权重确认不再需要再删高重下很慢~/Library/Application Support/Docker下的 Docker.raw20-100G容器磁盘映像docker system prune中会删掉未使用的镜像和卷/private/var/vm约等于内存大小交换文件加休眠镜像不用手动删高别动~/Library/Group Containers变化很大应用间共享容器谨慎逐个确认高关于这张表有几个补充。~/Library/Caches不要图省事整个删掉删完之后所有应用都会在接下来几天疯狂重建缓存尤其是浏览器、IDE、设计软件你会明显感觉到变慢。我一般只删明显过期的比如某个早就不用的软件留下的缓存目录。~/Library/Containers更不能乱来。微信、QQ、钉钉这些应用的本地数据都在各自的容器里聊天记录、接收的文件、图片视频缓存全在里面直接在 ncdu 里删目录很可能把聊天记录一起带走。正确姿势是在应用自己的设置里找清理缓存管理存储空间让它自己删。/private/var/vm是交换文件和休眠镜像所在的地方大小通常等于或略大于物理内存。这是系统运行的必要组成别碰。你在 ncdu 里看到它会觉得刺眼但它不是垃圾。4.3 删除前的核对流程我固定走四步ncdu 的d键可以直接删但我给自己定了一套流程避免手滑。第一步看到想删的目标光标停上去按i把完整路径从头到尾读一遍。这一步看着多余但真的能救命——很多目录名高度相似比如Application Support下面几十个应用的目录差一个单词就是另一个软件的数据。第二步确认这个目录是不是被某个正在运行的应用占用。占用状态下删了也没用应用会立刻重建或者删到一半失败。先把相关应用退出。第三步优先使用该软件自己的清理命令而不是在 ncdu 里直接删。Xcode 的模拟器和缓存有官方命令Docker 有docker system df看用量、docker system prune清理npm 有npm cache clean --forceHomebrew 有brew cleanup -s。官方命令知道什么是安全的、什么是还在用的比你自己猜准得多。ncdu 在我这里的定位是定位工具而不是清理工具它负责告诉你空间在哪动手清理尽量交给专用工具。第四步真要在 ncdu 里删就从最小的那个开始试删完按r重新计算当前目录看数字有没有变。确认没问题再去动更大的。删除操作会弹确认框别一路按回车冲过去。5. ncdu 扫不到的角落以及为什么扫不到5.1 快照引用的数据块目录树里根本不存在前面提过 APFS 快照这里说它对扫描结果的具体影响。快照是写时复制产生的它引用的数据块在文件系统层面是活的但没有一个路径指向它们。你用任何基于路径遍历的工具——ncdu、du、图形化工具都一样——都扫不到这部分。这就造成一个现象你把某个 30GB 的目录删掉df -h看可用空间只多了 5GB。处理办法是查快照并清理。tmutil listlocalsnapshots /列出所有本地快照如果要删就执行tmutil deletelocalsnapshots加上对应的时间戳。不过我不建议养成随手删快照的习惯因为那是时间机器的本地临时备份删了就等于放弃了一个短期的恢复点。更稳妥的做法是把它纳入常规维护确认重要数据已经在别处有备份之后需要腾空间时再删。还有一个特殊情况是可清除空间。这部分容量系统标记为随时可回收df里不计入已用也不在任何目录里。它大小波动很大你不需要管它系统在真正需要空间时会自己处理。5.2 巨型单文件容器镜像、虚拟机、模型权重ncdu 有个很实用但很多人没注意到的行为如果你在一个目录里看到某一行特别大但它不是目录没有可进入的箭头那它就是一个单文件。这种时候按i能看到完整路径和大小往往就是这几类东西。容器镜像的磁盘映像是典型代表它是一个看起来不大的.raw文件实际可能膨胀到几百 G里面的内容由容器运行时管理你在 ncdu 里进去看只能看到稀疏结构。它的清理必须在容器工具里做先看用量再清理注意prune的变体里带不带--volumes带上的话会把你没在用的数据卷也一起删掉如果有挂在卷里的数据就会丢。虚拟机的磁盘映像也是同类问题.utm、.pvm、.vmwarevm这些包里面是一个或多个虚拟磁盘文件。删除整个包意味着这台虚拟机彻底没了不是清理空间。如果只是想缩小它要在虚拟机软件里做磁盘压缩修剪未使用的块直接删文件是灾难。还有一类是模型权重文件和数据集动辄几十上百 G。这类文件的特点是删除容易、重下极慢动手之前一定确认清楚是不是还在用。我一般会给这类目录加个标记文件在 ncdu 里一眼能认出来。5.3 外接卷、网络卷和权限盲区-x参数会跳过挂载点所以扫根目录时不会跑到外接硬盘和磁盘映像里去。想单独扫某块外接盘直接指定它的挂载路径就行注意外接盘的格式差异会带来不同表现exFAT 和 NTFS 上 ncdu 能正常扫但删除操作在 NTFS 上可能因为权限或兼容层而失败。网络卷SMB、NFS 这些我不建议用 ncdu 扫。原因是每一次lstat都要走网络一个几万文件的共享目录能让扫描卡到失去响应而且走网络拿到的大小信息可能不准。真要统计网络存储的用量去看存储端自己的配额和用量界面更靠谱。最后一类盲区是系统保护卷。macOS 的系统卷是只读的签名卷你sudo扫能扫到数字也真实但在 ncdu 里对它执行删除一定失败。这不是 ncdu 的问题是系统设计如此。另外一些应用把数据放在受沙盒保护的位置目录你能看到、能进入但删除会被拒绝表现为操作没反应或者报错。遇到这种情况回到应用本身去找清理入口。6. ncdu 不是万能药说说它和其他工具的配合6.1 du、df、dust、dua-cli 各自的位置工具没有绝对的好坏关键是知道什么时候用哪个。df -h是第一眼看的是文件系统级别哪个卷挂在哪、总共多大、用了多少、剩多少。它永远是我打开终端后的第一条命令因为如果挂载点不对后面所有的扫描都是在错误的目标上做。du -sh * | sort -h是一次性快照优点是任何机器上都有、可以写进脚本、可以通过一些远程执行方式在服务器上跑。缺点是每次都要重新扫、不能交互下钻。远程机器上没装 ncdu 的时候我就用这套组合。ncdu是我本机的主力交互式、能下钻、能导出。它解决的是我要在一棵很大的树里找最粗的枝这个问题。dust是另一类工具它输出的是一份带条形图的树状摘要一条命令从根往下展开几层一眼看完。它比du好看太多比ncdu更快看到全局。缺点是它只给你一次性的视图不能像 ncdu 那样反复下钻。我现在偶尔用它做快速预览确认大概分布之后再用 ncdu 深入。dua-cli介于两者之间既有交互模式也有聚合模式用法上更现代一些。如果你已经习惯了 ncdu 的键位其实没有太大必要换。6.2 图形化工具什么时候真的值得用说 ncdu 没有之一是指命令行场景图形化工具在某些情况下有它的价值我不装作看不见。DaisyDisk 是我给不熟悉命令行的同事推荐得最多的一个环形图视觉效果直观扫描速度也不错可以直接在界面里预览和删除。它的价值在于给非技术同事解释空间去哪了这件事上一张图比一堆路径有说服力。GrandPerspective 是免费的方块图treemap找一大堆小文件堆起来的占用特别强。有时候你会遇到一种情况某个目录里几十万个小文件合计占了 20G但单个看起来都不大这种时候方块图的视觉冲击力比数字列表更强。OmniDiskSweeper 是老牌工具按大小排序列表界面极简免费。功能上和 ncdu 高度重合但操作靠鼠标慢一些。这几个工具共同的短板是扫描更慢、需要授予完全磁盘访问权限、删除操作的反馈不如命令行透明、卸载时可能留下后台组件。所以我的用法是分工的——命令行负责定位和计算图形化负责沟通和演示。真要动手清理还是回到命令行走官方清理命令。6.3 我固定用的那套磁盘体检流程最后把这套流程完整写一遍你可以直接照搬也可以按自己的情况裁。df -h看总量和挂载点确认目标盘是哪个。tmutil listlocalsnapshots /看本地快照的数量和时间。sudo ncdu -x -o /tmp/scan-before.json /扫一遍结果导出留档。打开结果进~再进Library按s排序把前面的几个大目录记下来。对着上面第 4.2 节那张表判断每一项的可删性不确定的先不动。优先用官方清理命令模拟器用xcrun simctl delete unavailable容器用容器工具自己的清理包管理缓存用各自的 clean 命令Homebrew 用brew cleanup -s。清理完重启一次让系统和应用释放掉临时文件。sudo ncdu -x -o /tmp/scan-after.json /再扫一次和 before 那份对着看确认空间确实释放了。把这套流程设成每季度一次的例行公事扫描结果文件按日期命名归档。再说个我自己的小技巧把常用的清理命令写成 shell 函数或者别名放在~/.zshrc里比如一个diskcheck用来跑前三步、一个cleancache用来跑几个包管理器的清理。这样每次维护只需要敲两个词不容易因为嫌麻烦而拖着不做。但要提醒一句别把这些命令串成一条无脑执行的脚本——清理动作涉及数据删除任何时候都值得停下来看一眼再确认。我个人这几年用下来最大的体会是磁盘空间这件事问题从来不是没有工具而是不知道空间在哪。一旦定位清楚了删什么都心里有数。所以与其装一堆清理软件让它自动帮你删东西不如用一个可靠的工具把目录树摊开看明白然后自己决定动手。ncdu 在我这里就是这个角色的唯一选择它不聪明不主动不驻留但它把一件最基础的事情做得又快又准你要的全部信息都在那一屏里。