<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>快速预览 on 小景</title>
        <link>https://jingyuan-zheng.github.io/zh/tags/%E5%BF%AB%E9%80%9F%E9%A2%84%E8%A7%88/</link>
        <description>Recent content in 快速预览 on 小景</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-Hans</language>
        <copyright>Jingyuan Zheng</copyright>
        <lastBuildDate>Thu, 22 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jingyuan-zheng.github.io/zh/tags/%E5%BF%AB%E9%80%9F%E9%A2%84%E8%A7%88/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>MacHunt：用原生 Swift 文件搜索工具，在 Mac 上快速找到文件</title>
            <link>https://jingyuan-zheng.github.io/zh/p/machunt-native-file-search/</link>
            <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate>
            <guid>https://jingyuan-zheng.github.io/zh/p/machunt-native-file-search/</guid>
            <description>&lt;img src=&#34;https://jingyuan-zheng.github.io/img/machunt-native-file-search/search.png&#34; alt=&#34;Featured image of post MacHunt：用原生 Swift 文件搜索工具，在 Mac 上快速找到文件&#34; /&gt;&lt;p&gt;MacHunt 是一个在 Mac 本地建立文件名与元数据索引的搜索工具，原生 Swift Beta 将搜索、筛选、Quick Look 和文件操作放进同一个窗口。&lt;/p&gt;&#xA;&lt;p&gt;有时记得文件名的一小部分，却忘了放在哪个目录。相比反复打开 Finder，一个能按路径、类型、日期继续缩小范围的结果列表更适合这种场景（见图 1）。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/MacHunt_SwiftUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;这个仓库&lt;/a&gt; Fork 自 &lt;a class=&#34;link&#34; href=&#34;https://github.com/dacj4n/MacHunt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;dacj4n/MacHunt&lt;/a&gt;。原来的 Tauri、React、Rust 版本仍保留在根目录；这里介绍的是 &lt;code&gt;swift_beta/&lt;/code&gt; 中的原生 Mac 版本。它目前标为 Beta，适合先用自己的常用目录试用。&lt;/p&gt;&#xA;&lt;div class=&#34;post-figure&#34;&gt;&#xA;&lt;img src=&#34;https://jingyuan-zheng.github.io/img/machunt-native-file-search/search.png&#34; alt=&#34;MacHunt 原生 Swift Beta 搜索结果界面&#34;&gt;&#xA;&lt;div class=&#34;caption&#34;&gt;图 1：原生版本的搜索列表、元数据列和筛选入口。截图来自项目仓库。&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;安装原生-beta&#34;&gt;安装原生 Beta&#xA;&lt;/h2&gt;&lt;p&gt;前往 &lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/MacHunt_SwiftUI/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Releases&lt;/a&gt;，下载 Swift Beta 的 DMG，打开后拖入“应用程序”。当前提供的安装包面向 Apple 芯片 Mac，要求 macOS 14 或更新版本。它采用 ad-hoc 签名，尚未公证；首次启动受系统拦截时，请先核对下载来源，再按发布说明操作。&lt;/p&gt;&#xA;&lt;p&gt;应用可以建立初始索引。第一次建议只选择自己需要的目录，并检查排除规则。扫描范围越大，初始化工作越多；某些目录也可能因为权限而无法读取。&lt;/p&gt;&#xA;&lt;p&gt;例如只想找工作资料，可以先把“文稿”目录加入索引，把缓存或不需要搜索的下载目录排除。设置页能看到已索引项目数、实时监控状态和文件分类（见图 2）。先用小范围确认搜索结果符合预期，再考虑扩大范围。&lt;/p&gt;&#xA;&lt;div class=&#34;post-figure&#34;&gt;&#xA;&lt;img src=&#34;https://jingyuan-zheng.github.io/img/machunt-native-file-search/settings.png&#34; alt=&#34;MacHunt 的索引状态和文件分类设置&#34;&gt;&#xA;&lt;div class=&#34;caption&#34;&gt;图 2：在设置中查看索引状态与文件分类。截图来自项目仓库。&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;如果需要从命令行完整扫描，README 提供了下面的方式：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/Applications/MacHunt.app/Contents/Helpers/machunt&amp;#34;&lt;/span&gt; build --path /&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;执行前退出 MacHunt，等索引完成后再打开。这里的 &lt;code&gt;/&lt;/code&gt; 表示整个文件系统；只是想试用时，不必一开始就选择这样的范围。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先搜索再筛选和预览&#34;&gt;先搜索，再筛选和预览&#xA;&lt;/h2&gt;&lt;p&gt;可以先输入有辨识度的文件名片段，再用目录、分类、日期或大小缩小结果。原生版本支持按片段、通配符或正则表达式、近似拼写搜索，也可以指定区分大小写。常用的文件分类可以修改，还能自己添加分类。&lt;/p&gt;&#xA;&lt;p&gt;找到候选项后，先按空格调用系统 Quick Look，再决定打开还是到 Finder 查看周围文件（见图 3）。经常使用的结果可以固定保存。列表支持列选择、排序和多选；“移到废纸篓”也在操作菜单中，处理之前先核对路径。&lt;/p&gt;&#xA;&lt;div class=&#34;post-figure&#34;&gt;&#xA;&lt;img src=&#34;https://jingyuan-zheng.github.io/img/machunt-native-file-search/quick-look.png&#34; alt=&#34;MacHunt 调用 macOS Quick Look 预览文件&#34;&gt;&#xA;&lt;div class=&#34;caption&#34;&gt;图 3：先用系统 Quick Look 确认内容，再决定如何处理文件。&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;文件名搜索与内容搜索要分清&#34;&gt;文件名搜索与内容搜索要分清&#xA;&lt;/h2&gt;&lt;p&gt;MacHunt 索引的是文件名、路径、日期、大小、Finder 标签和云端状态等元数据，不索引正文。如果记得的是文档中的一句话，它不能代替文档内容搜索。&lt;/p&gt;&#xA;&lt;p&gt;原生索引保存在 &lt;code&gt;~/Library/Caches/MacHuntSwift/index.db&lt;/code&gt;。文件变动通过 FSEvents 增量维护；重建时先生成新数据库，完成后再替换旧索引，避免把半成品当作完整结果。&lt;/p&gt;&#xA;&lt;p&gt;iCloud 仅在线文件也需要留意。扫描索引不会主动为了读取正文而下载它们，但打开或 Quick Look 预览可能触发系统下载。本地索引不等于搜索结果里的每个文件都已经离线保存。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用一份找不到的报告试一遍&#34;&gt;用一份找不到的报告试一遍&#xA;&lt;/h2&gt;&lt;p&gt;假设只记得文件名中有 &lt;code&gt;budget&lt;/code&gt;，却不知道它在下载目录还是项目文件夹。先输入这个片段，观察结果的路径列；如果同名结果很多，再限定到工作资料所在目录，筛选文档类别。随后按修改时间或大小排序，把明显无关的导出副本排到一边。&lt;/p&gt;&#xA;&lt;p&gt;选中候选项按空格预览，确认标题和内容，再按需要打开原文件。对于想看旁边附件的情况，用“在 Finder 中显示”更直接。完成这次查找后，可以把经常回看的那份文件固定起来；固定项适合长期参考材料，但仍要保留能够区分项目和版本的名字。&lt;/p&gt;&#xA;&lt;p&gt;普通片段搜索没有结果时，再考虑通配符或近似匹配。比如记得扩展名而忘了主体，可以用模式搜索；只记得零散字母时，近似匹配可以帮助缩小范围。先从最简单的一种模式开始，一次只改变一个条件，避免路径、类别和大小限制叠在一起，把真正的文件也排除掉。&lt;/p&gt;&#xA;&lt;h2 id=&#34;用命令行搜索不必重建另一份索引&#34;&gt;用命令行搜索，不必重建另一份索引&#xA;&lt;/h2&gt;&lt;p&gt;应用内附的命令行工具和窗口共用索引，适合已经习惯在终端处理路径的人。下面先查询索引状态，再在“文稿”路径内搜索 &lt;code&gt;budget&lt;/code&gt;，最后演示按模式查找 Swift 文件。完整路径可避免没有配置 PATH 时找不到命令：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;cli&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/Applications/MacHunt.app/Contents/Helpers/machunt&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$cli&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; status&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$cli&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; search --path &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/Documents&amp;#34;&lt;/span&gt; --json budget&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$cli&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; search --pattern &lt;span class=&#34;s1&#34;&gt;&amp;#39;*.swift&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--json&lt;/code&gt; 方便让另一个脚本读取结果；只想自己看时，可以省略它。模式里的 &lt;code&gt;*.swift&lt;/code&gt; 要保留引号，避免在 MacHunt 收到参数以前，就被当前 Shell 展开成当前目录的文件清单。这里做的是检索，不是再次运行全盘索引。&lt;/p&gt;&#xA;&lt;h2 id=&#34;已知文件搜不到时先查范围&#34;&gt;已知文件搜不到时，先查范围&#xA;&lt;/h2&gt;&lt;p&gt;先确认文件是否位于索引根目录内，有没有被排除规则或隐藏文件设置跳过，再清空搜索筛选条件。如果是外接盘，核对它是否已经连接并可在 Finder 打开。索引中存在路径，也不表示盘当前在线，或者文件已经从云端下载到本机。&lt;/p&gt;&#xA;&lt;p&gt;知道完整文件名时，可以用它做一次简单查询；连这次也找不到，再检查索引状态和应用对目录的读取权限。不要一开始就扩大到全盘重建。先找出“没有扫描到”还是“条件把结果过滤掉”，通常更有助于理解自己的设置。&lt;/p&gt;&#xA;&lt;h2 id=&#34;想自行构建时&#34;&gt;想自行构建时&#xA;&lt;/h2&gt;&lt;p&gt;原生版本的命令行工具与界面共用索引，还可以输出 JSON。没有另外配置 PATH 时，应使用应用包内工具的完整路径。&lt;/p&gt;&#xA;&lt;p&gt;自行构建的入口是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Jingyuan-Zheng/MacHunt_SwiftUI.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; MacHunt_SwiftUI/swift_beta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;swift &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scripts/build-app.sh release&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;构建需要带 Swift 6.2 或更新版本的 Xcode。不要把根目录旧 Tauri 版本的构建命令与 &lt;code&gt;swift_beta/&lt;/code&gt; 混用。&lt;/p&gt;&#xA;&lt;p&gt;如果还想改善 Finder 的列表浏览，可以看 &lt;a class=&#34;link&#34; href=&#34;https://jingyuan-zheng.github.io/zh/p/finder-folder-sizes/&#34; &gt;批量开启文件夹大小显示&lt;/a&gt;。Beta 的最新功能与限制以 &lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/MacHunt_SwiftUI#readme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;项目 README&lt;/a&gt; 为准。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
