MPICK(1) General Commands Manual MPICK(1)
NAME
mpick — advanced message filter
SYNOPSIS
mpick [−F file] [−T] [−v] [−t test] [msgs ...]
DESCRIPTION
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:
−F file
Read expression from file and only show matching messages, see “TESTS”. file,
−T
Include whole thread.
−t test
Only show messages matching the expression test, see “TESTS”.
−v
Print how many messages were tested and picked to standard error.
TESTS
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_]+
EXIT STATUS
The mpick utility exits 0 on success, and >0 if an error occurs.
EXAMPLES
You can pick mails to move them into another maildir.
mv $(mlist ./INBOX | mpick -t ’from =˜ "@github"’) ./github/cur
Or you can use mpick to pick mails from the current sequence.
mpick -t ’subject =˜˜ "mblaze"’ | mscan
A 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"’ | mscan
SEE ALSO
lr(1), mailx(1)
AUTHORS
Leah Neukirchen
<[email protected]>
Duncan Overbruck <[email protected]>
LICENSE
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.
http://creativecommons.org/publicdomain/zero/1.0/ GNU July 30, 2020 MPICK(1)