| MPICK(1) | General Commands Manual | MPICK(1) |
mpick — advanced
message filter
mpick |
[-F file]
[-T] [-v]
[-t test]
[msgs ...] |
mpick prints all matching messages.
If used interactively, mpick will default
to the current sequence. Otherwise, mpick will read
filenames from the standard input.
The options are as follows:
mpick tests are given by the following
EBNF:
<expr> ::= <expr> ? <expr> : <expr> -- ternary operator
| <expr> || <expr> -- disjunction
| <expr> && <expr> -- conjunction
| ! <expr> -- negation
| ( <expr> )
| <expr> "|" <str> -- pipe current mail to command
| <expr> ">>" <str> -- append current mail to file
| <expr> ">" <str> -- write current mail to file
| <flagprop>
| <timeprop> <numop> <dur>
| <numprop> <numop> <num>
| <hdrprop> <decodeop> <strop> <str>
| <strprop> <strop> <str>
| prune -- do not match further messages in thread
| print -- always true value
| skip -- always false value
| <let>
| <ident>
<flagprop> ::= child | draft | flagged | info | new | parent | passed
| replied | seen | selected | trashed
<timeprop> ::= atime | ctime | mtime | date
<numprop> ::= depth | kept | replies | index | size | total
<numop> ::= <= | < | >= | > | == | = | !=
<dur> ::= "./path" -- mtime of relative path
| "/path" -- mtime of absolute path
| "YYYY-MM-DD HH:MM:SS"
| "YYYY-MM-DD" -- at midnight
| "HH:MM:SS" -- today
| "HH:MM" -- today
| "-[0-9]+d" -- n days ago at midnight
| "-[0-9]+h" -- n hours before now
| "-[0-9]+m" -- n minutes before now
| "-[0-9]+s" -- n seconds before now
| [0-9]+ -- absolute epoch time
<num> ::= [0-9]+ ( c -- *1
| b -- *512
| k -- *1024
| M -- *1024*1024
| G -- *1024*1024*1024
| T )? -- *1024*1024*1024*1024
| cur -- index of cur message
<hdrprop> ::= from | to | subject | <str>
<decodeop> ::= . addr -- match address parts
| . disp -- match address display parts
| -- empty matches raw headers
<strprop> ::= path
<strop> ::= == | = | != -- string (in)equality
| === | !=== -- case insensitive string (in)equality
| ~~ | !~~ -- glob (fnmatch)
| ~~~ | !~~~ -- case insensitive glob (fnmatch)
| =~ | !=~ | !~ -- POSIX Extended Regular Expressions
| =~~ | !=~~ -- case insensitive POSIX Extended Regular Expressions
<str> ::= " ([^"] | "")+ " -- use "" for a single " inside "
| $[A-Za-z0-9_]+ -- environment variable
-- let expressions evaluate the expression following the `in` keyword,
-- the bindings are lazily evaluated.
<let> ::= { let <ident> = <scope> } in <scope>
-- Inside the scope previously defined idents are replaced with expressions
<scope> ::= <expr>
<ident> ::= [A-Za-z_][A-Za-z0-9_]+
The mpick utility exits 0 on
success, and >0 if an error occurs.
You can pick mails to move them into another
maildir.
mv $(mlist ./INBOX | mpick -t 'from
=~ "@github"') ./github/curOr you can use mpick to pick mails from
the current sequence.
mpick -t 'subject =~~
"mblaze"' | mscanA more advanced mpick expression to pick
mails in a certain time span, which are flagged as replied or not seen.
mpick -t 'date >= "2016-01-01" && date < "2017-01-01" && (replied || !seen)'
And to find other mblaze users.
mpick -t '"User-Agent" =~~
"mblaze"' | mscanLeah Neukirchen
<leah@vuxu.org>
Duncan Overbruck
<mail@duncano.de>
mpick is in the public domain.
To the extent possible under law, the creator of this work has waived all copyright and related or neighboring rights to this work.
| July 30, 2020 | Debian |