在 macOS 系统中,通过命令行查看文件夹大小是高效管理磁盘空间的重要方式,相较于图形界面逐级点击查看,命令行操作能快速定位大文件或占用空间异常的目录,尤其适合处理深层嵌套的文件夹结构,本文将详细介绍使用 du(disk usage)、ncdu(NCurses Disk Usage)等命令查看文件夹大小的方法,并结合实例说明参数搭配与结果解读,同时提供通过管道、脚本等进阶技巧实现批量分析,最后附常见问题解答帮助用户解决实际操作中的困惑。

基础命令:du 查看文件夹大小
du 是 macOS 系统内置的磁盘使用情况分析工具,通过不同参数组合可灵活输出文件夹及其子文件夹的占用空间。
基本语法与常用参数
du 命令的基本语法为 du [选项] [目录],常用参数包括:
-h:以人类可读格式显示(如 K、M、G),默认以字节为单位;-s或--summarize:仅显示总计大小,不递归显示子文件夹;-d或--max-depth:指定递归深度,如-d 1只显示当前目录下一级文件夹的大小;-a或--all:显示所有文件的大小,而仅文件夹;-c或--total:显示总计大小,常与-s搭配使用;--exclude:排除特定文件或文件夹,如--exclude "*.log"忽略所有日志文件。
实例操作
-
查看当前目录总大小:
du -sh
输出示例:
2G .,表示当前目录占用 1.2GB 空间。
(图片来源网络,侵删) -
查看指定目录下一级文件夹大小:
du -d 1 /Users/username/Documents
输出示例:
4K /Users/username/Documents/notes 256M /Users/username/Documents/photos 1.1G /Users/username/Documents/videos-d 1限制了递归深度,仅显示 Documents 目录下的直接子文件夹大小。 -
排除特定文件后查看目录大小:
若目录中有大量缓存文件(如.cache文件夹),可通过--exclude排除:du -sh --exclude ".cache" /Users/username/Apps
-
统计多个目录的总大小:
du -sh /Users/username/Documents /Users/username/Downloads /Users/username/Pictures
进阶工具:ncdu 交互式磁盘分析
ncdu 是基于 ncurses 的交互式磁盘使用分析工具,支持通过键盘导航、删除文件,实时查看目录结构,适合深度排查大文件。
安装 ncdu
macOS 默认未安装 ncdu,可通过 Homebrew 安装:
brew install ncdu
使用方法
-
扫描当前目录:
ncdu
启动后界面会显示当前目录下各子文件夹及文件的大小,按方向键上下切换,按
Enter进入子目录,按Backspace返回上级目录。 -
扫描指定目录:
ncdu /Users/username/Library
-
交互操作:
- 按
d:删除当前选中文件/文件夹(需二次确认); - 按
c:按文件大小排序(默认按名称排序); - 按
g:按文件夹大小排序; - 按 :显示帮助菜单。
- 按
输出示例
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /Users/username/Library -------------------------------------------------
96.2 GiB [##########] /.cache
42.7 GiB [##### ] /Application Support
15.3 GiB [## ] /Mail
2.1 GiB [# ] /Logs
512.0 MiB [ ] /Caches
128.0 MiB [ ] /Preferences
通过可视化条形图可直观看出 .cache 目录占用空间最大,适合优先清理。
管道与脚本:批量分析文件夹大小
当需要批量分析多个目录或按条件筛选时,可结合 du 与管道、awk、sort 等命令实现高效处理。
按大小排序并显示前 10 大文件夹
du -h /Users/username | sort -hr | head -n 10
sort -hr:按人类可读格式的数值降序排序(h表示 human-readable,r表示 reverse);head -n 10:取前 10 行结果。
查找超过 1GB 的文件夹
du -h /Users/username | grep "G" | sort -hr
通过 grep "G" 筛选出带 G(GB 单位)的行,再降序排列。
使用 awk 计算目录总大小
若需统计所有 .app 应用程序的总大小:
du -h /Applications | awk '$0 ~ /\.app$/ {sum += $1} END {print "Total size:", sum}'
awk '$0 ~ /\.app$/:匹配包含.app的行;{sum += $1}:累加文件大小(需确保$1为数值,若含单位需先处理);END {print}:输出累加结果。
常见问题解答(FAQs)
问题 1:为什么 du -sh 显示的文件夹大小与 Finder 显示不一致?
解答:
不一致的原因主要有两点:
- 计算方式差异:
du默认计算文件夹内所有文件的实际占用空间(包括磁盘块对齐的冗余空间),而 Finder 可能显示“逻辑大小”(即文件实际大小,未考虑磁盘块),一个 1KB 的文件在磁盘上可能占用 4KB(按 4KB 块对齐),du会显示 4KB,而 Finder 可能显示 1KB。 - 隐藏文件与元数据:
du默认包含隐藏文件(如.DS_Store、.git)和文件元数据(如扩展属性、资源分叉),而 Finder 默认忽略部分隐藏文件,可通过du -sh --exclude=".*"排除隐藏文件,或使用xattr -l查看文件的扩展属性。
问题 2:如何快速定位并删除大文件?
解答:
结合 du 和 find 命令可快速定位大文件,再通过 rm 删除(需谨慎操作,避免误删系统文件),步骤如下:
-
查找超过 100MB 的文件:
find /Users/username -type f -size +100M
-type f:仅查找文件;-size +100M:查找大小超过 100MB 的文件。
-
按大小排序并显示路径:
find /Users/username -type f -exec ls -lh {} + | sort -k5 -hr | head -n 10ls -lh:显示文件详细信息(含大小);sort -k5 -hr:按第 5 列(大小)降序排序。
-
删除指定文件(以
old_video.mp4为例):rm /Users/username/Downloads/old_video.mp4
注意:删除前建议通过
ls -lh确认文件路径,或使用mv移至回收站(如mv ~/.Trash/)。
