菜鸟科技网

mac命令行如何查看文件夹大小?

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

mac命令行如何查看文件夹大小?-图1
(图片来源网络,侵删)

基础命令: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 空间。

    mac命令行如何查看文件夹大小?-图2
    (图片来源网络,侵删)
  • 查看指定目录下一级文件夹大小

    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 与管道、awksort 等命令实现高效处理。

按大小排序并显示前 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 显示不一致?

解答
不一致的原因主要有两点:

  1. 计算方式差异du 默认计算文件夹内所有文件的实际占用空间(包括磁盘块对齐的冗余空间),而 Finder 可能显示“逻辑大小”(即文件实际大小,未考虑磁盘块),一个 1KB 的文件在磁盘上可能占用 4KB(按 4KB 块对齐),du 会显示 4KB,而 Finder 可能显示 1KB。
  2. 隐藏文件与元数据du 默认包含隐藏文件(如 .DS_Store.git)和文件元数据(如扩展属性、资源分叉),而 Finder 默认忽略部分隐藏文件,可通过 du -sh --exclude=".*" 排除隐藏文件,或使用 xattr -l 查看文件的扩展属性。

问题 2:如何快速定位并删除大文件?

解答
结合 dufind 命令可快速定位大文件,再通过 rm 删除(需谨慎操作,避免误删系统文件),步骤如下:

  1. 查找超过 100MB 的文件

    find /Users/username -type f -size +100M
    • -type f:仅查找文件;
    • -size +100M:查找大小超过 100MB 的文件。
  2. 按大小排序并显示路径

    find /Users/username -type f -exec ls -lh {} + | sort -k5 -hr | head -n 10
    • ls -lh:显示文件详细信息(含大小);
    • sort -k5 -hr:按第 5 列(大小)降序排序。
  3. 删除指定文件(以 old_video.mp4 为例):

    rm /Users/username/Downloads/old_video.mp4

    注意:删除前建议通过 ls -lh 确认文件路径,或使用 mv 移至回收站(如 mv ~/.Trash/)。

分享:
扫描分享到社交APP
上一篇
下一篇