Ed Blackman wrote (Fri 2023-Aug-04 14:34:44 -0400):

> ... remove emails that were received more than X days ago, but can also 
> express "but don't delete if they're flagged".
..
> I could give up on using the message headers to determine the message date, 
> learn how filenames are constructed in Maildir (to read the flags) and use a 
> shell script built around "find".

That's what I'd probably do. It might be simpler than expected:

   find ~/mail/folder1/cur/ -maxdepth 1 -type f -not -name '.*' \
                            -mtime +30 \
                            -not -name '*:2,*F*' \
                            -delete

The conditions in the first line are generic, the other three
lines should match your example: received more than 30 full days
ago && not flagged => delete.

If you also want to delete mails that "have not yet been seen by
any mail application" [1], let "find" also look at new/. Entries
in new/ never contain an info part (the stuff after the colon),
so you can drop the check for an unset "F" flag if you need to
invoke "find" separately for new/ anyway.

   [1] https://en.wikipedia.org/wiki/Maildir

Cheers, Marcus

-- 
   Marcus C. Gottwald  ·  <m...@cheers.de>  ·  @mcg:cheers.de

Reply via email to