我的单个日记md文件里面有两条task
- [ ] 测试
- [ ] #dataview 测试
怎么筛选带 #dataview 标签的这条task?dataview不行,要用dataviewjs,不会写代码。
范围是log文件夹里的所有文件
我的单个日记md文件里面有两条task
怎么筛选带 #dataview 标签的这条task?dataview不行,要用dataviewjs,不会写代码。
范围是log文件夹里的所有文件
可以改下述代码:
```dataviewjs
```
//the tag we want to search for
const tag = "#dataview"
//get all md files in vault
const files = app.vault.getMarkdownFiles()
//filter to files with the desired tag
const taggedFiles = new Set(files.reduce((acc, file) => {
const tags = app.metadataCache.getFileCache(file).tags
if (tags) {
let filtered = tags.filter(t => t.tag === tag)
if (filtered) {
return [...acc, file]
}
}
return acc
}, []))
//create an array with the filename and lines that include the desired tag
const arr = Array.from(taggedFiles).map(async(file) => {
const content = await app.vault.cachedRead(file)
const lines = await content.split("\n").filter(line => line.includes(tag))
return [file.name, lines]
})
//resolve the promises and build the table
Promise.all(arr).then(values => {
dv.table(["file", "lines"], values)
})
```
```dataview
task
where !completed and contains(text, "#dataview")
谢谢,这个很好。
请问怎么排除某个文件?或者说限制在某个文件夹内?
请问这条代码怎么改才能用于list而不是task?直接改其中的task为list无法使用。
```query
tag: #important
自己去研究下dataview的基本语法,或者用上面的query也行
query
太长的内容显示不全
dataview基本语法我看过了,倒是有dataviewjs的办法
我不太明白,你提供的那段代码中 !completed 这个条件为什么只在task类型中有效,list无效?
使用的这段语法发现一个问题
类似
- [ ] 任务1 #tag
可以被筛选出来。
但是
- [ ] 任务1
- [ ] 小任务 #tag
这样 tag设置在二级任务里面,无法被筛选处理来,不知道有没有其他好的方法解决。