4 .TH PICK %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
6 pick \- select messages by content
45 .RB [ \-public " | " \-nopublic ]
46 .RB [ \-zero " | " \-nozero ]
47 .RB [ \-list " | " \-nolist ]
56 scan\0`pick\0\-from\0jones`
57 pick\0\-to\0holloway\0\-sequence\0select
58 show\0`pick\0\-before\0friday`
64 searches within a folder for messages with the specified
65 contents, and then identifies those messages. Two types of search
66 primitives are available: pattern matching and date constraint
71 is used to perform the matching, so the
72 full regular expression (see
80 is used directly, and with the others, the grep pattern constructed is:
83 `component[ \\t]*:\&.*pattern'
86 This means that the pattern specified for a
89 everywhere in the message, including the header and the body, while
90 the other pattern matching requests are limited to the single specified
91 component. The expression
94 `\-\|\-component\ pattern'
97 is a shorthand for specifying
100 `\-search `component[ \\t]*:\&.*pattern'\ '
103 It is used to pick a component which is not one of `To:',
104 `Cc:', `Date:', `From:', or `Subject:'.
106 .RB ` "pick\0\-\|\-reply\-to\0pooh" '.
108 Pattern matching is performed on a per\-line basis. Within the header
109 of the message, each component is treated as one long line, but in the
110 body, each line is separate. Lower\-case letters in the search pattern
111 will match either lower or upper case in the message, while upper case
112 will match only upper case.
116 switch is a pattern matching operation (as
117 described above), to find messages sent on a certain date the pattern
118 string must match the text of the `Date:' field of the message.
120 Independent of any pattern matching operations requested, the switches
126 may also be used to introduce date/time
127 constraints on all of the messages. By default, the `Date:'
128 field is consulted, but if another date yielding field (such as
129 `BB\-Posted:' or `Delivery\-Date:') should be used, the
139 will actually parse the date
140 fields in each of the messages specified in `msgs' and compare them
141 to the date/time specified. If
143 is given, then only those
144 messages whose `Date:' field value is chronologically after the
145 date specified will be considered. The
148 complimentary action.
154 switches take legal 822\-style date
155 specifications as arguments.
157 will default certain missing
158 fields so that the entire date need not be specified. These fields
159 are (in order of defaulting): timezone, time and timezone, date, date
160 and timezone. All defaults are taken from the current date, time,
163 In addition to 822\-style dates,
165 will also recognize any of
166 the days of the week (`sunday', `monday', and so on),
167 and the special dates `today', `yesterday' (24 hours
168 ago), and `tomorrow' (24 hours from now). All days of the
169 week are judged to refer to a day in the past (e.g., telling \fIpick\fR
170 `saturday' on a `tuesday' means `last\ saturday'
171 not `this\ saturday').
172 Further more, dates in a simplified ISO 8601/RFC 3339 style (e.g.
173 `YYYY-MM-DD' or `YYYY-MM-DD hh:mm:ss') are accepted.
174 Finally, in addition to these special specifications,
177 also honor a date specification of the form `\-\fIddd\fR', which means
178 `\fIddd\fR days ago'.
187 identifies the messages of the last thirty days.
190 supports complex boolean operations on the searching primitives
204 pick\0\-after\0yesterday\0\-and
205 \-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
209 identifies messages recently sent by `frieda' or `fear'.
211 The matching primitives take precedence over the
213 switch, which in turn takes precedence over
215 which in turn takes precedence
218 To override the default precedence, the
222 switches are provided, which act just like opening and closing
223 parentheses in logical expressions.
225 If no search criteria are given, all the messages specified on the
226 command line are selected (this defaults to `a').
228 Once the search has been performed, if the
231 message numbers of the selected messages are written to the standard
232 output separated by newlines. This is
235 quickly generating arguments for other
237 programs by using the
238 `backquoting' syntax of the shell. For example, the command
241 scan\0`pick\0+todo\0\-after\0`31 Mar 83 0123 PST'`
246 those messages in the indicated folder which meet the
247 appropriate criterion. Note that since
250 are written out prior to
252 invocation, you need not give
253 the folder argument to
260 switch may be given once for each sequence the user wishes to define.
261 For each sequence named, that sequence will be defined to mean exactly
262 those messages selected by
267 pick\0\-from\0frated\0\-seq\0fred
270 defines a new message sequence for the current folder called
271 `fred' which contains exactly those messages that were selected.
275 will zero the sequence before adding it. This
276 action can be disabled with the
278 switch, which means that the
281 will be added to the sequence, if it
282 already exists, and any messages already a part of that sequence will
299 .ta \w'%etcdir%/ExtraBigFileName 'u
300 ^$HOME/.mmh/profile~^The user profile
303 .SH "PROFILE COMPONENTS"
307 .ta \w'ExtraBigProfileName 'u
308 ^Path:~^To determine the user's mail storage
309 ^Current\-Folder:~^To find the default current folder
317 .RB ` +folder "' defaults to the current folder"
318 .RB ` msgs "' defaults to all messages"
319 .RB ` "\-datefield date" '
321 .RB ` \-list "' is the default if no `\-sequence', `\-nolist' otherwise"
325 If a folder is given, it will become the current folder.
328 In previous versions of
337 the selected messages. This was rather
338 `inverted logic' from the UNIX point of view, so
340 was changed to define sequences and output those sequences. Hence,
342 can be used to generate the arguments for all other
344 commands, instead of giving
346 endless switches for invoking those commands
349 Also, previous versions of
351 balked if you didn't specify
352 a search string or a date/time constraint. The current version does
353 not, and merely matches the messages you specify. This lets you type
357 show\0`pick\0l:20\0\-seq\0fear`
364 mark\0\-add\0\-nozero\0\-seq\0fear\0l:20
369 Finally, timezones used to be ignored when comparing dates: they aren't
374 .RB ` "pick sequence \-list" '
375 to enumerate the messages in a sequence
376 (such as for use by a shell script).
381 must occur prior to the
385 switch it applies to.
389 is used in a back\-quoted operation, such as
392 scan\0`pick\0\-from\0jones`
397 selects no messages (e.g., no messages are from
398 `jones'), then the shell will still run the outer command (e.g.,
400 Since no messages were matched,
403 no output, and the argument given to the outer command as a result of
406 is empty. In the case of
409 the outer command now acts as if the default `msg' or `msgs' should be
410 used (e.g., `all' in the case of
413 unexpected behavior, if
415 was given, and if its standard output is not a tty, then
417 outputs the illegal message number `0'
418 when it fails. This lets the outer command fail gracefully as well.
420 To account for this case when combining
422 with regular shell tools, filter out the message number `0'.
426 pick\0...\0|\0fgrep\0-vx\0\&0\0|\0wc\0-l
429 to count the number of messages picked.
431 The pattern syntax `[l-r]' is not supported; each letter to be
432 matched must be included within the square brackets.