257 字
1 分钟
搜索模板
Zen
2026-03-29
0 次
0 人
// 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 上编辑此页