139 lines
4.2 KiB
Plaintext
139 lines
4.2 KiB
Plaintext
|
|
The 'search' variable determines the kind of search performed on the
|
|
database by the 'prog' command, providing flexibilty on search times and
|
|
ranges.
|
|
|
|
'search' is a string variable whose value is one of the following:
|
|
|
|
(1) "sub"
|
|
|
|
Substring (case insensitive). A simple, everyday substring search. A
|
|
match occurs if the the file (or directory) name in the database
|
|
contains the user-given substring.
|
|
|
|
Example:
|
|
|
|
"is" will match "islington" and "this" and "poison"
|
|
|
|
(2) "subcase"
|
|
|
|
Substring (case sensitive). As above but the case of the
|
|
strings involved becomes significant.
|
|
|
|
Example:
|
|
|
|
"TeX" will match "LaTeX" but not "Latex" or "TExTroff".
|
|
|
|
|
|
(3) "exact"
|
|
|
|
Exact match. The fastest search method of all. The restriction is
|
|
that the user string (the argument to the 'prog' command) has to
|
|
_exactly_ match (including case) the string in the database. This is
|
|
provided for those of who who know just what you are looking for.
|
|
|
|
For example, if you wanted to know where all the "xlock.tar.Z" files
|
|
were, this is the kind of search to use.
|
|
|
|
(4) "regex" This is the DEFAULT search method.
|
|
|
|
ed(1) regular expressions. Searches the database with the user
|
|
(search) string which is given in the form of an ed(1) regular
|
|
expression.
|
|
|
|
NOTE: Unless specifically anchored to the beginning (with ^) or end
|
|
(with $) of a line, ed(1) regular expressions have ".*" prepended and
|
|
appended to them. For example, it is NOT NECESSARY to say
|
|
|
|
prog .*xnlock.*
|
|
|
|
since
|
|
prog xnlock
|
|
|
|
will suffice. Thus the regex match becomes a simple substring match.
|
|
|
|
There are also compound searches made up of combinations
|
|
of the above search methods in sequence:
|
|
|
|
exact_sub Try "exact". If no matches found use
|
|
"sub".
|
|
exact_subcase Try "exact". If no matches found use
|
|
"subcase"
|
|
exact_regex Try "exact". If no matches found use
|
|
regex.
|
|
|
|
|
|
An "ed(1) regular expression" (from here on called RE) is the particular
|
|
type of regular expression used in the "ed" editor under Unix. For those
|
|
who are interested in all the gory details of REs see the help for
|
|
"regex" (which is incomplete, at the moment :-(), otherwise what follows
|
|
should be sufficient for most needs.
|
|
|
|
A regular expression is a convenient way to search for a set of specific
|
|
strings matching a pattern. To be able to specify such a pattern with
|
|
only the ordinary set of printable character we have to co-opt some of
|
|
them. For example in a RE the period means _any_ single character,
|
|
while an asterisk, '*', means zero or more occurences of the *PRECEDING*
|
|
RE.
|
|
|
|
For example:
|
|
|
|
knob - matches any string containing the substring 'knob'
|
|
|
|
a*splat - matches strings that contain zero or more a's followed by the
|
|
string 'splat'
|
|
|
|
#.*# - would match anything containing a '#' followed by zero or more
|
|
occurences of _any_ character, followed by another '#'
|
|
|
|
Other special characters that may be useful are '[' and ']', which are
|
|
used together. They can be used to specify either a set of characters
|
|
to match or a set of characters to not match. An example of the first
|
|
case is:
|
|
|
|
[abcd]
|
|
|
|
which matches any of one of the four letters, while an example of the
|
|
second case is:
|
|
|
|
[^abcd]
|
|
|
|
in which the '^' _in_the_first_position_ means that any character _not_
|
|
in the list will be matched. As well, ranges can be specified with a
|
|
'-'.
|
|
|
|
[a-z]
|
|
|
|
matches any lower case letter and,
|
|
|
|
[^a-z]
|
|
|
|
matches any character other than a lower case letter. Furthermore, you
|
|
can specify multiple ranges such as:
|
|
|
|
[%@a-z0-9]
|
|
|
|
or
|
|
|
|
[^A-Za-z]
|
|
|
|
meaning: match '%' or '@' or any lower case letter or digit, and match
|
|
any character other than a letter, respectively.
|
|
|
|
When you want to match a character which has a special meaning you should
|
|
precede it by a backslash, '\'.
|
|
|
|
Some final examples of REs are:
|
|
|
|
[Mm]ac\.txt - match anything containg the string "Mac.txt" or
|
|
"mac.txt"
|
|
|
|
[^aeiou][^aeiou]* - match any string consisting entirely of non-vowels
|
|
|
|
foo-v[0-9]\.tar\.Z - match "foo-v0.tar.Z" through "foo-v9.tar.Z"
|
|
|
|
|
|
Good luck, and remember that many things can be found with only a simple
|
|
substring (e.g. latex).
|
|
|