用mdfind扫描Spotlight索引的所有.app应用,配合sed和sort去重导出纯净名称列表;补查Homebrew Cask(brew list --cask)、App Store(mas list)及pkg安装项(pkgutil + lsbom)。

你想在终端里快速翻出Mac上所有已装的.app应用,不是只看/Applications目录下那几十个,而是连隐藏路径、用户级安装、甚至没被Spotlight索引的都扫出来——系统报告能点开看,但没法一键复制成列表发给同事或存档。
用mdfind全盘扫描所有.app应用
这一步最核心,它绕过目录结构,直接问Spotlight“你认识哪些Application”,哪怕应用藏在~/Downloads/临时解压包里也能揪出来:
打开终端,执行:mdfind "kMDItemKind == 'Application'"
命令会逐行输出每个.app的完整路径,比如/Applications/Slack.app、/Users/john/Library/Application Support/MyTool.app。注意:如果某应用刚拖进来还没被Spotlight索引,这条命令就查不到它——【必须等Spotlight完成索引,或手动触发mdimport】。
想立刻补救?对那个漏掉的应用路径运行:mdimport "/path/to/YourApp.app",再重跑mdfind就能看见了。
提取干净名称并去重导出到桌面
原始输出带路径太长,日常整理只需.app名字;同一应用可能有多个版本(如VS Code-Copilot版和原版),得去重:
执行:mdfind "kMDItemKind == 'Application'" | sed 's/\.app.*$/.app/' | sort -u > ~/Desktop/app_list.txt
这条命令做完,桌面上就多了一个app_list.txt,里面每行一个独立.app名,没有重复,也没有路径干扰。文件编码是UTF-8,中文应用名不会乱码。
补查Homebrew Cask和App Store安装项
mdfind扫不到Homebrew Cask装的GUI应用(比如Rectangle、BalenaEtcher),也看不到App Store后台自动更新的组件——它们不走.app路径,也不进Spotlight索引:
方法一:查Homebrew Cask已装应用
运行:brew list --cask
这会列出所有通过brew install --cask装的图形程序,比如visualstudiocode、google-chrome。
方法二:查App Store已购/已装应用
先确保已安装mas工具:brew install mas
再登录你的Apple ID:mas signin your@apple.com
最后运行:mas list
输出格式是ID 名称 版本,例如409183694 Keynote 14.0。
验证pkg安装器部署的非.app软件
驱动、Java运行时、企业内部工具常以.pkg方式安装,它们根本不生成.app,但确实算“已安装软件”:
第一步:列出所有注册的pkg包ID
执行:pkgutil --pkgs
第二步:筛选你关心的包,比如查Oracle JDK
执行:pkgutil --pkgs | grep -i jdk
返回类似com.oracle.jdk8u201这样的ID。
第三步:确认这个pkg实际装了什么文件
执行:lsbom /private/var/db/receipts/com.oracle.jdk8u201.bom 2>/dev/null
输出的是完整安装路径清单,含/Library/Java/JavaVirtualMachines/jdk…这类关键位置。

















