257 字
1 分钟
搜索模板
// 1. 设置关键词(Templater 动态输入版本在下面)const prompt = "Obsidian";// const prompt = await tp.system.prompt("请输入搜索关键词:");
const files = app.vault.getMarkdownFiles();const results = [];
// 2. 遍历文件for (const file of files) { // 排除当前文件 if (file.basename === "未命名") continue;
const content = await app.vault.cachedRead(file);
// 匹配关键词 if (content.toLowerCase().includes(prompt.toLowerCase())) { // 读取分类 const page = dv.page(file.path); const category = page?.category ?? "未分类";
// 【核心修复】改用文件系统原生创建时间 let ctime = "未知时间"; try { // 获取文件系统的创建时间 const stat = await app.vault.adapter.stat(file.path); if (stat?.ctime) { const date = new Date(stat.ctime); ctime = date.toLocaleDateString("zh-CN", { year: "numeric", month: "2-digit", day: "2-digit" }).replace(/\//g, "/"); } } catch (e) { console.error("读取文件时间失败:", e); }
// 笔记链接 const fileLink = `[[${file.basename}]]`;
results.push([category, ctime, fileLink]); }}
// 3. 按分类排序(可选,让同分类笔记排在一起)results.sort((a, b) => a[0].localeCompare(b[0]));
// 4. 输出表格dv.header(2, `🔍 搜索:${prompt}`);if (results.length > 0) { dv.table(["分类", "创建时间", "笔记"], results);} else { dv.paragraph("没有找到匹配的结果。");}发现错误或想要改进这篇文章?
在 GitHub 上编辑此页