taskwarrior, удалить старые повторяющиеся задачи

Как мне удалить все повторяющиеся задачи в Taskwarrior, которые завершены до определенной даты?

Я старался:

task Nevena until:07/29/2014 uuids

чтобы получить список тех, которые выпадают до этой даты, и собрать их идентификаторы, чтобы я мог передать их для команды удаления, но я не получил ожидаемых результатов.


person branquito    schedule 05.09.2014    source источник


Ответы (3)


Я считаю, что ответ заключается в том, чтобы удалить родительские задачи, и тогда повторяющиеся задачи больше не будут создаваться. Вы можете показать все родительские задачи с помощью 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.

Теперь повторяющиеся задачи больше не должны появляться.

person dustymabe    schedule 30.11.2019

Я нашел ответ, подергав себя за волосы некоторое время (ВНИМАНИЕ: эта команда может также удалить задачи, которые не повторяются):

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

сделал трюк.

Это сработало, потому что независимо от даты завершенные задачи не имели даты выполнения в будущем, поэтому эта команда оставила нетронутыми мои текущие новые задачи со сроками выполнения.

person branquito    schedule 05.09.2014
comment
Предупреждение. Эта команда также может удалять задачи, которые не повторяются. - person Andi; 04.09.2017
comment
Мне показалось более безопасным получать UUID вручную с помощью grep " mask:" ~/.task/pending.data - person Thomas Rebele; 15.06.2018

Команда

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

должен делать именно то, что вы хотите.

На основе ответа @branquito.

person Tom Dörr    schedule 18.02.2021