pick



PICK(1)                                                                PICK(1)




NAME

       pick - search for messages by content


SYNOPSIS

       pick [+folder] [msgs] [-and ...] [-or ...] [-not ...]
            [-lbrace ... -rbrace] [--component pattern]
            [-cc pattern] [-date pattern] [-from pattern]
            [-search pattern] [-subject pattern] [-to pattern]
            [-after date] [-before date] [-datefield field]
            [-sequence name ...]  [-public] [-nopublic] [-zero]
            [-nozero] [-list] [-nolist] [-version] [-help]

     typical usage:
            scan `pick -from jones`
            pick -to holloway -sequence select
            show `pick -before friday`


DESCRIPTION

       Pick searches within a folder for messages with the specified contents,
       and then identifies those messages.  Two types of search primitives are
       available: pattern matching and date constraint operations.

       A modified grep(1) is used to perform the matching, so the full regular
       expression (see ed(1)) facility is available  within  `pattern'.   With
       `-search',  `pattern'  is  used directly, and with the others, the grep
       pattern constructed is:

            "component[ \t]*:.*pattern"

       This means that the pattern specified for a  `-search'  will  be  found
       everywhere in the message, including the header and the body, while the
       other pattern matching requests are limited  to  the  single  specified
       component.  The expression

            `--component pattern'

       is a shorthand for specifying

            `-search "component[ \t]*:.*pattern" '

       It  is  used  to  pick  a  component  which is not one of "To:", "cc:",
       "Date:", "From:", or "Subject:".  An example is `pick --reply-to pooh'.

       Pattern  matching  is performed on a per-line basis.  Within the header
       of the message, each component is treated as one long line, but in  the
       body,  each line is separate.  Lower-case letters in the search pattern
       will match either lower or upper case in the message, while upper  case
       will match only upper case.

       Note  that since the `-date' switch is a pattern matching operation (as
       described above), to find messages sent on a certain date  the  pattern
       string must match the text of the "Date:" field of the message.

       Independent  of any pattern matching operations requested, the switches
       `-after date' or `-before date' may also be used to introduce date/time
       constraints  on  all of the messages.  By default, the "Date:" field is
       consulted, but if another date yielding field (such as "BB-Posted:"  or
       "Delivery-Date:")  should be used, the `-datefield field' switch may be
       used.

       With `-before' and `-after', pick will actually parse the  date  fields
       in  each  of  the  messages specified in `msgs' and compare them to the
       date/time specified.  If `-after' is given, then  only  those  messages
       whose  "Date:"  field value is chronologically after the date specified
       will be considered.  The `-before' switch specifies  the  complimentary
       action.

       Both  the  `-after'  and  `-before'  switches take legal 822-style date
       specifications as arguments.  Pick will default certain missing  fields
       so  that  the  entire date need not be specified.  These fields are (in
       order of defaulting): timezone, time and timezone, date, date and time-
       zone.   All  defaults  are taken from the current date, time, and time-
       zone.

       In addition to 822-style dates, pick will also  recognize  any  of  the
       days of the week ("sunday", "monday", and so on), and the special dates
       "today", "yesterday" (24 hours ago),  and  "tomorrow"  (24  hours  from
       now).   All  days  of the week are judged to refer to a day in the past
       (e.g., telling pick "saturday" on a "tuesday" means "last saturday" not
       "this saturday").

       Finally,  in  addition  to these special specifications, pick will also
       honor a specification of the form "-dd", which means "dd days ago".

       Pick supports complex boolean operations on  the  searching  primitives
       with  the  `-and',  `-or',  `-not', and `-lbrace ... -rbrace' switches.
       For example,

            pick -after yesterday -and
                 -lbrace -from freida -or -from fear -rbrace

       identifies messages recently sent by "frieda" or "fear".

       The matching primitives take precedence over the `-not'  switch,  which
       in  turn  takes  precedence  over `-and' which in turn takes precedence
       over `-or'.  To override the  default  precedence,  the  `-lbrace'  and
       `-rbrace'  switches are provided, which act just like opening and clos-
       ing parentheses in logical expressions.

       If no search criteria are given, all the messages specified on the com-
       mand line are selected (this defaults to "all").

       Once the search has been performed, if the `-list' switch is given, the
       message numbers of the selected messages are written  to  the  standard
       output  separated  by  newlines.   This is extremely useful for quickly
       generating arguments for other nmh programs by using the  "backquoting"
       syntax of the shell.  For example, the command

            scan `pick +todo -after "31 Mar 83 0123 PST"`

       says  to  scan  those  messages  in the indicated folder which meet the
       appropriate criterion.  Note that since  pick 's  context  changes  are
       written  out  prior to scan 's invocation, you need not give the folder
       argument to scan as well.

       Regardless of the operation of the `-list' switch, the `-sequence name'
       switch  may  be given once for each sequence the user wishes to define.
       For each sequence named, that sequence will be defined to mean  exactly
       those messages selected by pick.  For example,

            pick -from frated -seq fred

       defines  a  new  message  sequence for the current folder called "fred"
       which contains exactly those messages that were selected.

       Note that whenever pick processes a `-sequence name'  switch,  it  sets
       `-nolist'.

       By  default, pick will zero the sequence before adding it.  This action
       can be disabled with the `-nozero' switch, which means  that  the  mes-
       sages  selected  by  pick  will be added to the sequence, if it already
       exists, and any messages already a part of that  sequence  will  remain
       so.

       The `-public' and `-nopublic' switches are used by pick in the same way
       mark uses them.


FILES

       $HOME/.mh_profile                    The user profile


PROFILE COMPONENTS

       Path:                To determine the user's nmh directory
       Current-Folder:      To find the default current folder


SEE ALSO

       mark(1)


DEFAULTS

       `+folder' defaults to the current folder
       `msgs' defaults to all
       `-datefield date'
       `-zero'
       `-list' is the default if no `-sequence', `-nolist' otherwise


CONTEXT

       If a folder is given, it will become the current folder.


HISTORY

       In previous versions of MH, the  pick  command  would  show,  scan,  or
       refile  the  selected  messages.  This was rather "inverted logic" from
       the UNIX point of view, so pick was changed  to  define  sequences  and
       output  those sequences.  Hence, pick can be used to generate the argu-
       ments for all  other  MH  commands,  instead  of  giving  pick  endless
       switches for invoking those commands itself.

       Also,  previous  versions of pick balked if you didn't specify a search
       string or a date/time constraint.  The current version  does  not,  and
       merely  matches the messages you specify.  This lets you type something
       like:

            show `pick last:20 -seq fear`

       instead of typing

            mark -add -nozero -seq fear last:20
            show fear

       Finally, timezones used to be ignored when comparing dates: they aren't
       any more.


HELPFUL HINTS

       Use "pick sequence -list" to enumerate the messages in a sequence (such
       as for use by a shell script).


BUGS

       The argument to the `-after' and `-before' switches must be interpreted
       as  a single token by the shell that invokes pick.  Therefore, one must
       usually place the argument to this switch inside  double-quotes.   Fur-
       thermore,  any  occurrence  of  `-datefield'  must  occur  prior to the
       `-after' or `-before' switch it applies to.

       If pick is used in a back-quoted operation, such as

            scan `pick -from jones`

       and pick selects no messages (e.g., no messages are from "jones"), then
       the  shell  will  still run the outer command (e.g., "scan").  Since no
       messages were matched, pick produced no output, and the argument  given
       to  the outer command as a result of backquoting pick is empty.  In the
       case of nmh programs, the outer command now  acts  as  if  the  default
       `msg'  or `msgs' should be used (e.g., "all" in the case of scan ).  To
       prevent this unexpected behavior, if `-list'  was  given,  and  if  its
       standard  output  is  not  a tty, then pick outputs the illegal message
       number "0" when it fails.  This lets the outer command fail  gracefully
       as well.


       The  pattern syntax "[l-r]" is not supported; each letter to be matched
       must be included within the square brackets.



[nmh-1.0.4]                         MH.6.8                             PICK(1)

Man(1) output converted with man2html