有没有方法可以将带有某些标签的文件快速移动到指定的文件夹

可以用templater配合dataview实现,这个是从某个固定文件夹的文件按标签批量移动到各自的文件夹,不过只针对单标签的文件,两个以上是自己移动

<%*
let tag2path = {
	"复变函数":"200-主笔记/O_数理科学和化学/O174.5_复变函数",
	"概率论":"200-主笔记/O_数理科学和化学/O211_概率论",
	"自动控制原理":"200-主笔记/T_工业技术/TP_自动化技术、计算机技术/TP13_自动控制理论/自动控制原理",
	"信号处理":"200-主笔记/T_工业技术/TN_无线电电子学、电信技术/TN91_通信/信号与系统",
	"逻辑学":"200-主笔记/B_哲学/B81_逻辑学(论理学)",
	"数字电路":"200-主笔记/T_工业技术/TN_无线电电子学、电信技术/TN7_基本电子电路/TN79_数字电路",
	"电子元件":"200-主笔记/T_工业技术/TN_无线电电子学、电信技术/TN6_电子元件",
	"数值分析":"200-主笔记/O_数理科学和化学/O241_数值分析",
	"复变函数":"200-主笔记/O_数理科学和化学/O174.5_复变函数",
	"微机原理":"200-主笔记/T_工业技术/TP_自动化技术、计算机技术/TP3_计算技术、计算机枝术/TP368.1_微处理机/微机原理",
let dv=app.plugins.plugins["dataview"].api
let folder='100-Index/150-卡片'
let files = await dv.pages(`"${folder}"`)
files = files.filter(p=>p.tags && p.file.tags.length==1 && p.tags in tag2path)
new Notice(`移动 ${files.length} 个卡片`,2000)
console.log(files.array().map(p=>p.file.name))
files.forEach(async p=>await app.vault.rename(await tp.file.find_tfile(p.file.path),p.file.path.replace(folder, tag2path[p.tags])))
-%>

上面是标签到文件夹的映射表,中间的folder是原始的文件夹

2 个赞