AppleScript 无法直接实现动态排序应用列表的 GUI,但可通过组合 System Events、mdfind 和 do shell script 实时获取并按名称、最近使用时间或大小排序应用;支持输出为列表、菜单或文件,并可集成 FastScripts、Raycast 等工具增强交互。
applescript 本身不直接提供“动态排序应用列表”的 gui 功能,但可以通过脚本实时获取已安装应用、按名称、最近使用时间或大小等维度排序,并输出为列表、菜单或写入文件。关键在于组合 system events、mdfind(spotlight)和 do shell script 实现灵活筛选与排序。
获取所有已安装应用并按名称排序
macOS 中用户和系统级应用通常位于 /Applications 和 ~/Applications。以下脚本递归扫描这些路径,提取应用名并升序排列:
- 使用
mdfind "kMDItemContentType == 'com.apple.application-bundle'"更可靠(支持非标准路径) - 用
sort -f实现忽略大小写的字母序排序 - 过滤掉以点开头的隐藏应用(如
.DS_Store干扰项)
示例代码片段:
set appList to do shell script "mdfind 'kMDItemContentType == "com.apple.application-bundle"' | grep -E '/Applications/|/Applications$' | sed 's/.*\///; s/\.app$//' | sort -f | uniq"
按最近使用时间倒序排列(需启用 Spotlight 索引)
macOS 记录应用的最后访问时间(kMDItemLastUsedDate),可结合 mdls 提取并排序:
- 先用
mdfind获取应用路径列表 - 对每个路径执行
mdls -name kMDItemLastUsedDate -raw获取时间戳 - 用
awk和sort -k2,2r按时间字段倒序排列 - 注意:首次运行可能需几秒,且未打开过的应用该字段为空
生成交互式选择菜单(配合 FastScripts 或 Keyboard Maestro)
纯 AppleScript 的 choose from list 不支持实时排序,但可通过以下方式增强体验:
- 将排序后的应用名存入变量,调用
choose from list显示 - 选中后用
open -a "AppName"启动(自动处理空格与版本号) - 搭配第三方工具如
Raycast或Alfred可实现真正“动态”——键入即排序即启动
保存排序结果到文本文件供其他工具调用
适合集成进自动化工作流(如触发 LaunchBar 或同步到 Obsidian):
- 用
do shell script "echo '" & sortedApps & "' > ~/Desktop/app_sorted.txt" - 添加时间戳行:
date '+%Y-%m-%d %H:%M'方便追踪更新 - 设为定时运行(通过
launchdplist)可模拟“动态刷新”效果


















