必须递归清除整个目录树的com.apple.quarantine属性才能解决“已损坏”提示,可用xattr -r -d com.apple.quarantine命令拖入文件夹执行;若权限不足需加sudo;更安全的方式是用find精准清理可执行文件。

Mac下载的软件包解压后双击子程序仍提示“已损坏”,是因为隔离属性只清除了外层文件夹,内部可执行文件仍被com.apple.quarantine标记拦截——必须递归清除整个目录树才能彻底解决。
用xattr -r -d 递归清除整个文件夹的隔离属性
这一步操作起来很简单,直接在终端输入命令并拖入文件夹即可,无需逐个处理内部文件。
打开“终端”应用程序。
输入命令:xattr -r -d com.apple.quarantine,末尾留一个空格。
把目标文件夹(例如 ~/Desktop/MyAppBundle)直接从访达窗口拖进终端,路径会自动补全并转义空格和特殊字符。
按回车执行;若提示【Operation not permitted】,说明该目录下存在受SIP保护的系统级文件或当前用户无写权限,此时需改用 sudo xattr -r -d com.apple.quarantine 并输入管理员密码——但请确认该文件夹不含系统关键组件,否则可能破坏完整性验证。
更安全的批量清理:用find命令精准匹配可执行文件
当目标文件夹混杂大量文档、图片等非可执行文件时,递归清除会做无用功,还可能误触受保护资源。此时应只清理真正需要运行的二进制文件。
方法一:清理当前目录下所有 .app、.pkg、.dmg、.sh 文件
使用 inotes CLI 从终端管理 Apple Notes。当需要在 macOS 的 Notes.app 中列出、读取、创建、编辑、删除或搜索备忘录时使用。
进入目标目录:cd /路径/到/文件夹
执行:find . \( -name "*.app" -o -name "*.pkg" -o -name "*.dmg" -o -name "*.sh" \) -exec xattr -d com.apple.quarantine {} \;
方法二:仅清理实际具备执行权限的文件(推荐)
执行:find . -type f -perm /111 -exec xattr -d com.apple.quarantine {} \;
这条命令会跳过纯文本、PDF、图片等不可执行文件,避免对无关文件误操作;-perm /111 表示只要拥有任一执行位(user/group/other)即匹配,覆盖 shell 脚本、Unix 可执行体、.app 包等常见类型。
验证是否清除成功
选取文件夹内任意一个子程序,例如 MyAppBundle/Contents/MacOS/app_binary。
在终端中运行:xattr -l 后拖入该文件,回车。
若输出为空,表示隔离属性已移除;若仍显示 com.apple.quarantine 行,则说明上一步未覆盖到该路径——检查是否漏掉了嵌套层级,或该文件被其他进程锁定导致属性无法修改。










