显示在 Mac OS X 中下载过的所有文件的下载历史列表

列出 Mac 上所有文件的下载历史

您是否曾想显示 Mac 的整个下载历史记录列表?也许你知道你下载了一个文件,但你不能完全确定你从哪里得到它和 “获取信息”技巧 没有用。或者,也许您正在尝试追踪放置在导致问题的系统上的文件。无论是用于故障排除、个人兴趣还是取证,以下命令都会向您显示您下载到 Mac 的所有内容,无论它们来自哪个应用程序:

如何查看下载到 Mac 的所有文件列表

这是通过查询 OS X 的文件隔离数据库来实现的,该数据库旨在保护 Mac 免受恶意下载。为此,您将使用终端应用程序和 sqlite。

  • 从 /Applications/Utilities/ 启动终端并在一行中输入以下命令:
  • sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* '从 LSQuarantineEvent 中选择 LSQuarantineDataURLString'

  • 点击回车查看下载文件列表

根据 Mac 的年龄和您下载的内容量,查询数据库和转储结果可能需要一段时间。您可能希望通过“排序”将结果传送到管道,以将下载的列表分组到类似的项目或来源中,看起来像这样:

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* '从 LSQuarantineEvent 中选择 LSQuarantineDataURLString' |排序

为了便于查看,您还可以将输出重定向到文本文件中,此命令会将列表转储到活动用户桌面上名为“QuarantineEventList.txt”的文件中:

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* '从 LSQuarantineEvent 中选择 LSQuarantineDataURLString' > ~/Desktop/QuarantineEventList.txt

输出列出了已通过隔离管理器的所有内容,对于最近几个版本的 Mac OS X 来说,它实际上是下载到 Mac 的所有项目,无论它来自哪个应用程序。通常,Mac 越旧,下载的文件越多,列表越大,运行查询所需的时间就越长。

如果您有 文件隔离已关闭 和应用程序,感谢 inket 的验证。

删除下载历史列表

对于那些不想拥有包罗万象的下载文件历史列表的人,您可以运行以下命令来删除隔离数据库的内容:

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* '从 LSQuarantineEvent 中删除'

您可以单独运行它,或者将它放入 .bash_profile 或 .profile 以在启动新终端窗口时自动清除数据库。

这已经过测试并继续在许多版本的 Mac OS X 中工作,从早期版本到 OS X El Capitan (10.11.x+)、OS X Yosemite、OS X Mavericks 10.9.5 和可能更新的版本。如果您成功使用此命令以及使用它的 OS X 版本,请在评论中告诉我们。

感谢 Scott 提供的重要提示,并感谢 Wiggums 提供的删除语法