任务战士,删除旧的重复任务。

16

我该如何删除taskwarrior中所有已完成的循环任务,直到某个日期?

我尝试了:

task Nevena until:07/29/2014 uuids

我希望列出那些早于某个日期的事项,并收集它们的ID,以便能够将它们传送到删除命令中,但我没有得到预期的结果。

3个回答

14

我认为答案是删除父任务,这样重复任务就不会再被创建了。您可以使用 task all +PARENT 显示所有父任务。例如:

$ task all +PARENT

ID St UUID     Age  Done Tags R Due        Until Description                                     
21 R  58e83c9b 1.7y           R 2018-04-01       replace upstairs air filter                     
20 R  f8b5b0db 1.7y       [1] R 2018-04-01       replace upstairs air filter

我不知怎么会有两个重复的任务,但我可以删除它们:

$ task delete 21 
Delete task 21 'replace upstairs air filter'? (yes/no) yes
Deleting task 21 'replace upstairs air filter'.
Deleted 1 task.
$
$ task delete 20
Delete task 20 'replace upstairs air filter'? (yes/no) yes
Deleting task 20 'replace upstairs air filter'.
Deleted 1 task.

现在,重复的任务不应该再出现了。


11

我终于找到了答案,之前抓狂了好一会儿(警告:这个命令有可能会删除那些非循环任务):

task $(task uuids due.before:now) delete

起到了作用。

这个方法可行,因为无论日期是什么,已完成的任务都没有未来的截止日期,所以这个命令保留了我当前带有截止日期的最新任务。


4
警告:这个命令可能会删除非循环的任务。 - Andi
我发现手动获取UUID更安全,可以使用grep“ mask:”~/.task/pending.data - Thomas Rebele

1

该命令

task $(task uuids due.before:now +CHILD +COMPLETED) delete

应该做你想要的事情。基于@branquito的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接