按每页25条分组并按时间顺序查看Markdown笔记的简易实现方法咨询
按每页25条分组并按时间顺序查看Markdown笔记的简易实现方法咨询
嘿,这个需求其实挺实用的,我给你分享几个简单易上手的方法,不用搞复杂的工具就能搞定:
方法一:用Python小脚本(适合愿意尝试轻量编程的用户)
如果你的笔记文件名里带了时间(比如2024-05-20-项目讨论.md这种格式),直接按文件名排序就行;要是没带,脚本也能读取文件的创建/修改时间来排序。
给你写了个极简版的脚本,复制过去改个路径就能用:
import os # 把这里改成你的笔记文件夹路径 notes_folder = "/Users/xxx/MyNotes" # 每页显示的笔记数量 per_page = 25 # 获取所有Markdown文件,按创建时间排序(也可以改成按文件名排序,把key改成lambda x: x) md_files = [f for f in os.listdir(notes_folder) if f.endswith(".md")] md_files.sort(key=lambda x: os.path.getctime(os.path.join(notes_folder, x))) # 分组生成分页汇总文件 for page_index in range(0, len(md_files), per_page): page_num = page_index // per_page + 1 current_page_files = md_files[page_index:page_index+per_page] output_filename = f"笔记汇总_第{page_num}页.md" with open(output_filename, "w", encoding="utf-8") as out_file: out_file.write(f"# 笔记汇总第{page_num}页\n\n") for note_file in current_page_files: note_path = os.path.join(notes_folder, note_file) with open(note_path, "r", encoding="utf-8") as note_content: # 把原笔记文件名作为小标题,方便区分 out_file.write(f"## {note_file[:-3]}\n") out_file.write(note_content.read()) out_file.write("\n---\n\n") # 用分割线隔开不同笔记 print("搞定!分页汇总文件已经生成啦~")
运行脚本后,你就能在当前目录看到按时间排序、每页25条的汇总Markdown文件,直接用任何Markdown阅读器打开就行。
方法二:用Obsidian插件(如果你是Obsidian用户,这是最省心的)
要是你平时用Obsidian记笔记,那直接用插件就能搞定,不用写代码:
- 先确保你的笔记都有
created元数据(Obsidian默认会给新笔记自动加上) - 安装Dataview插件(Obsidian社区插件里搜就能找到)
- 新建一个汇总笔记,输入下面的代码块:
TABLE file.name AS 笔记名称, file.cday AS 创建时间, file.content AS 笔记内容 FROM "" SORT file.cday ASC LIMIT 25 OFFSET 0
OFFSET 0对应第1页,改成OFFSET 25就是第2页,OFFSET 50是第3页,以此类推。你可以在汇总笔记里分几个标题,每个标题下放对应分页的代码块,就能直接在Obsidian里查看分页的时间排序笔记了。- 想要更自动化的话,还可以搭配Templater插件,写个模板一键生成所有分页的汇总笔记。
方法三:命令行工具组合(适合喜欢用终端的用户)
如果你习惯用命令行,用几个基础命令就能搞定:
- 先进入你的笔记文件夹,用命令按时间排序列出所有Markdown文件:
ls -rt *.md
(-rt表示按文件修改时间从早到晚排序,要是想用创建时间,Mac上可以用ls -Urt,Linux上用ls -crt)
2. 把文件列表分成每25个一组:
ls -rt *.md | split -l 25 - notes_page_
这会生成notes_page_aa、notes_page_ab这类文件,每个文件里是25个笔记的文件名。
3. 最后用一个小shell脚本把每组的内容合并成汇总文件:
for page_file in notes_page_*; do page_label=$(echo $page_file | sed 's/notes_page_//') output_file="笔记汇总_${page_label}页.md" echo "# 笔记汇总${page_label}页" > $output_file while read note_file; do echo -e "\n## ${note_file%.md}\n" >> $output_file cat "$note_file" >> $output_file echo -e "\n---\n" >> $output_file done < $page_file done
运行完脚本,分页的汇总文件就生成好了。
小提示:如果你的笔记文件名没带时间,上面的方法都可以调整成按文件的创建/修改时间排序,不用手动改文件名~
备注:内容来源于stack exchange,提问作者Edoardo
相关产品推荐
相关产品推荐

