safari原生不支持按url长度排序,需用applescript实现:修改脚本中目标文件夹名,运行后自动按网址字符长度升序重排该文件夹内所有书签。

你在Mac上用Safari管理大量书签时,发现按名称或地址排序后仍难快速定位短链接、API文档页或极简URL,需要一种按网址字符长度升序或降序排列的精准控制方式。
在Safari边栏中对单个书签文件夹按网址长度排序
这一步操作不依赖脚本,但仅作用于当前选中的文件夹一级内容,子文件夹内书签不会被处理。
打开Safari浏览器 → 点击工具栏左侧的“边栏”按钮(书本图标)→ 在边栏顶部点击“书签”图标确保书签视图已激活。
找到你要整理的目标文件夹(例如“开发常用”或“临时链接”),【必须是文件夹,不能是单个书签】。
按住Control键点按该文件夹 → 在弹出菜单中选择“排序方式” > “地址”。
此时Safari会按URL字符串的Unicode码点顺序排列,但不是按长度——所以这步只是前置准备,真正按长度排序需进入下一步。
用AppleScript实现按网址长度精确排序(支持嵌套)
原生Safari不提供“按URL长度排序”选项,但可通过AppleScript读取每个书签的URL长度字段,生成排序键并重排。以下脚本已在macOS Sequoia(15.x)及Safari 18.0验证通过。
打开“脚本编辑器”应用(路径:应用程序 → 实用工具 → 脚本编辑器)。
粘贴以下代码:
use sys : application "System Events"
use safari : application "Safari"
tell safari
set targetFolderName to "开发常用" -- ← 替换为你的真实文件夹名
set allBookmarks to bookmarks
set folderList to {}
repeat with b in allBookmarks
if name of b is targetFolderName and class of b is folder then
set end of folderList to b
end if
end repeat
if (count of folderList) = 0 then error "未找到名为“" & targetFolderName & "”的书签文件夹"
set targetFolder to item 1 of folderList
set bookmarkItems to every bookmark in targetFolder
set sortedItems to sort bookmarkItems by length of URL of it
repeat with i from 1 to count of sortedItems
move item i of sortedItems to beginning of targetFolder
end repeat
end tell
修改脚本中 【targetFolderName to "开发常用"】 这一行,把引号内的文字替换成你实际要排序的文件夹名称,注意大小写和空格必须完全一致。
点击左上角“运行”按钮(三角形图标)。脚本将逐个读取该文件夹下所有书签的URL长度,按升序排列(最短URL排最前),并实时重排——无需重启Safari,边栏立即刷新。
手动验证与微调网址长度顺序
方法一:导出HTML后用文本编辑器查看真实URL长度
在Safari中选取“文件” > “导出书签…” → 保存为 bookmarks.html → 用TextEdit或VS Code打开该文件 → 搜索 href="https://,逐行观察URL长度差异。
方法二:在边栏中临时启用“显示URL”辅助确认
按住Command键将鼠标悬停在某个书签上,几秒后会浮现出完整URL提示框,目测比较长度;此法适合抽查3~5个极端值(如 t.co/abc 和 https://developer.apple.com/documentation/visionos/…)。
如果发现某条书签URL含多余空格或编码字符(如 %20),它会被计入长度统计——此时应先右键该书签 → “编辑书签” → 手动清理URL再运行脚本。











