系统报告是唯一无需命令行、自带图形界面且能同时显示名称、版本、来源和最近使用时间的权威清单工具;配合mdfind、brew list --cask、mas list、pkgutil及which等命令,可全面覆盖.app、Cask、App Store、.pkg及CLI工具。

你想在 macOS 上一次性掌握所有已安装的软件,包括图形应用、命令行工具、App Store 下载项、Homebrew Cask 安装程序,甚至通过 .pkg 安装器部署的企业级组件——只看 /Applications 目录会漏掉用户级应用、隐藏路径里的工具、未被 Spotlight 索引的临时安装包,也完全覆盖不了驱动、JDK、系统扩展这类非 .app 形态的软件。
用系统报告一键导出全量应用清单
这是唯一无需命令行、自带图形界面、且能同时显示名称、版本、获得方式(App Store/开发者签名/未知)、最近使用时间的权威来源,适合发给同事或存档审计。
1、点击屏幕左上角苹果菜单 → 选择“关于本机”。
2、在弹出窗口中点击“系统报告…”按钮。
3、左侧边栏依次展开“软件” → “应用程序”。
4、右侧列表加载完成后,按 Command+A 全选 → Command+C 复制。
5、粘贴到 TextEdit 或 Numbers 中,即可保存为可读性高的纯文本或表格文件。
⚠️注意:系统报告只列出被 macOS 软件注册表识别的应用,不包含 Homebrew 命令行工具、未签名的脚本、或仅解压未安装的 .app。
终端全盘扫描所有 .app 应用
这一步绕过目录结构,直接调用 Spotlight 元数据引擎,连 ~/Downloads/里刚解压没来得及索引的 .app 都能捕获——但前提是 Spotlight 已完成索引。
打开终端,执行:
mdfind "kMDItemKind == 'Application'"
如果返回为空或明显遗漏,说明 Spotlight 索引滞后或损坏,必须先运行:
mdutil -i on / 启用索引 → 等待几分钟 → 再重跑 mdfind。
想立刻导出干净名称列表到桌面?执行:
mdfind "kMDItemKind == 'Application'" | sed 's/\.app.*$/.app/' | sort -u > ~/Desktop/app_list.txt
这个文件自动保存在桌面,UTF-8 编码,中文名不乱码,每行一个独立 .app 名称,无重复无路径干扰。
补查 Homebrew Cask 和 App Store 安装项
这两类应用常不生成标准 .app 路径,也不进 Spotlight 索引,系统报告可能完全不显示它们。必须单独调用对应管理器查询。
方法一:查 Homebrew Cask 已装 GUI 应用
运行:
brew list --cask
方法二:查 App Store 已购/已装应用
先确保已安装 mas:
brew install mas
再登录 Apple ID:
mas signin your@apple.com
最后执行:
mas list
【注意】mas list 只显示当前登录账户下购买或下载过的应用,离线安装、他人账户安装、或未同步的项目不会出现。
定位 pkg 安装器部署的非 .app 软件
驱动、Java 运行时、VMware Fusion、Parallels Desktop 等企业级工具常以 .pkg 方式安装,它们可能根本不生成 .app,或者把 .app 放在 /Library/Application Support/ 这类非标准位置——系统报告和 mdfind 都扫不到。
第一步:列出所有已注册的 pkg 包 ID
pkgutil --pkgs
第二步:筛选你关心的包,比如查 Zoom:
pkgutil --pkgs | grep -i zoom
第三步:确认该包是否真有安装文件(不是残留收据)
例如查得包 ID 为 com.zoom.pkg.ZoomInstaller, 执行:
lsbom /private/var/db/receipts/com.zoom.pkg.ZoomInstaller.bom 2>/dev/null | head -n 5
只要输出不为空,就说明它确实在磁盘上写入了文件,不是空壳收据。
查看命令行工具和开发环境路径
很多软件不带图形界面,但属于“已安装软件”的核心部分:Python、Node.js、Rust、Docker CLI、ffmpeg 等。它们不在系统报告里,也不走 .app 流程,必须靠 shell 查找。
查 Homebrew 安装的命令行工具路径:
brew --prefix python@3.12
查系统 PATH 中任意命令的真实路径:
which node
查所有已安装 Python 版本(含 pyenv、asdf 管理的):
ls /opt/homebrew/bin/python* 2>/dev/null; ls ~/.pyenv/versions/*/bin/python 2>/dev/null
这一步不做,你的“已安装软件列表”就永远缺了一大块底层支撑。

















