在一些文件中有使用 [[ ]]
的文字,但没有创建相应的文件,想要统一筛选出来进行处理。
不知道是否有现成的工具能够实现?
请问未被创建的链接是指这种吗。
是指文字中我输入了一个双链,但这个双链实际上还没有相应的文件,也就是这个文件是之后待创建的。我想把这类未被创建的双链筛选出来。
或者说,在关系图谱中是灰色的节点。
使用 #2 所链接话题的实例二,只看前有 ︎ 标识的即可。
需要用到dataview第三方插件。
然后在想要列取断链的地方使用dataviewjs的方式来录入以下代码。
function showBrokenLinksPaginated(pageSize = 20) {
const table = dv.el('div');
let items = [];
let getFC = file => app.metadataCache.getFileCache(file);
app.vault.getAllLoadedFiles().map(p => {
if (p.extension === 'md') {
let fileCache = getFC(p);
if (fileCache && fileCache.links) {
fileCache.links.forEach(link => {
let linkedFile = app.metadataCache.getFirstLinkpathDest(link.link, p.path);
if (!linkedFile) {
let linkToCreate = dv.el('a', link.link, { href: link.link + '.md', target: '_blank', class: 'internal-link' });
items.push([`[[${p.name}]]`, linkToCreate]);
}
});
}
}
});
let currentPage = 0;
function renderPage(page) {
table.empty();
const start = page * pageSize;
const end = start + pageSize;
const paginatedItems = items.slice(start, end);
dv.api.table(['文档', '断链链接'], paginatedItems, table, dv.component);
// 创建分页按钮
const paginationControls = dv.el('div');
if (page > 0) {
const prevButton = dv.el('button', '上一页');
prevButton.onclick = () => {
currentPage -= 1;
renderPage(currentPage);
};
paginationControls.appendChild(prevButton);
}
if (end < items.length) {
const nextButton = dv.el('button', '下一页');
nextButton.onclick = () => {
currentPage += 1;
renderPage(currentPage);
};
paginationControls.appendChild(nextButton);
}
table.appendChild(paginationControls);
}
renderPage(currentPage);
}
showBrokenLinksPaginated(20); // 每页显示20条记录