知乎链接:Obsidian 插件之 Dataview - 知乎
原来的代码是搜索所有的文件,求问怎么限定只获取特定文件夹的markdown文件呀!
输出所有带有标签的文件链接以及对应行且形成表格
```dataviewjs
// 获取 Obsidian 中的所有 Markdown 文件
const files = app.vault.getMarkdownFiles()
// 将带有标签的文件以及行筛选出来
let arr = files.map(async(file) => {
const content = await app.vault.cachedRead(file)
//turn all the content into an array
let lines = await content.split("\n").filter(line => line.includes("#tag"))
return ["[["+file.name.split(".")[0]+"]]", lines]
})
// 生成表格,如果要将当前的文件排除的话,请修改其中的排除文件
Promise.all(arr).then(values => {
console.log(values)
//filter out files without “Happy” and the note with the dataview script
const exists = values.filter(value => value[1][0] && value[0] != “[[排除文件]]”)
dv.table([“file”, “lines”], exists)
})
```
cuman
2
把代码里的
const files = app.vault.getMarkdownFiles()
改为
let folderpath="文件夹名称"
const files = app.vault.getMarkdownFiles().filter(file=>file.path.includes(folderpath))
1 个赞
这段代码还有2个需求请教一下大佬:
1.排序:现在是乱序的,希望能把文件排序,文件名是
2022-03-01
2022-03-02
这样的日记文件。
2.每个文件没有明显的分割界限,混在一起不好查看。
cuman
5
这句代码后面加上.sort()即可
const exists = values.filter(value => value[1][0] && value[0] != "[[排除文件]]").sort()
loring
(loring)
6
麻烦问一下,如果想让sort倒序排列,需要在sort()的括号中怎么填写哪?
再在后面加上 .reverse()
应该可以,这是反转数组的函数
loring
(loring)
8
确实管用!我试了在SORT的括号里边填写条件,发现总有其中几个是乱序的,困扰两三天了,感谢!
请教下 如果是想在两个文件夹里做标签汇总需要怎么改呢
或者这个排除文件语句有办法排除多个文档吗“const exists = values.filter(value => value[1][0] && value[0] != “[[排除文件]]”)”
leeson
10
怎么限定搜索的时间范围呢?
我的文件在YAML区设置了文本格式的文件生成时间,如“2023-10-06 17:21”,在搜索页面设置了时间范围,如“Startdate:: 2023-09-01”和“Enddate:: 2023-09-30”。将这段代码的第一句修改成 const files = app.vault.getMarkdownFiles().filter(f => (f.creationtime >= dv.current().Startdate) && (f.creationtime <= dv.current().Enddate)),可以运行、但是搜索结果为0。
应该怎么修改呢?