因为我用 org-agenda 来记录每天的时间使用情况(见示例配置),在 agenda 文件里产生了大量的 clock 记录,这导致在更新 agenda 视图时非常慢,所以我一直想能不能只对 clock 记录进行归档而不是归档某个具体的任务 —— 因为我有些任务就是用来纯计时的,不是用来做 GTD 的,查了一圈 org-mode 本身的机制好像不支持这个。
昨天花了一天时间糊了个脚本出来,勉强能用了,给有类似需求的朋友抛砖引玉一下。
使用:
python archive_logbook.py archive -i Dropbox/org/tasks/ -o Dropbox/org/tasks/archive
假设 Dropbox/org/tasks/ 中文件如下:
Dropbox/org/tasks/
├── inbox.org
├── personal.org
└── work.org
inbox.org 会被忽略,因为在我的配置里 inbox.org 只用来做收集,不参与计时。最终会把原来的 personal.org/work.org 中非本年的 clock 记录都删掉并在 Drobox/org/tasks/archive 下生成如下归档文件,其中 archive20240221094758_personal.org 是原来 personal.org 的副本,这样如果发现归档不符合预期的话方便恢复,archive20240221094759_work.org 同理。
Dropbox/org/tasks/archive/
├── archive20240221094758_2018_personal.org
├── archive20240221094758_2019_personal.org
├── archive20240221094758_2020_personal.org
├── archive20240221094758_2021_personal.org
├── archive20240221094758_2022_personal.org
├── archive20240221094758_2023_personal.org
├── archive20240221094758_personal.org
├── archive20240221094759_2020_work.org
├── archive20240221094759_2021_work.org
├── archive20240221094759_2022_work.org
├── archive20240221094759_2023_work.org
└── archive20240221094759_work.org