findwild
User Guide v.
1.1
Introduction
findwild is
(yet another) program to search for files. It works quite differently
from other file search programs. findwild offers the following search
criteria:
-
directory
path to search, with multiple wildcards placed anywhere
- file
name(s) to search for, with multiple wildcards anywhere
- file
name(s) to exclude, with multiple wildcards anywhere
- file
content string(s) to search for, with multiple wildcards anywhere
- file
content string(s) to exclude, with multiple wildcards anywhere
- file
modification date within a desired range
- your
choice of delimiters that define the file strings to be searched
- search
the list of files produced by the previous search
findwild is
especially useful for programmers needing to search a large source
library for references to a symbolic name.
License
and Warranty
findwild
is a free program licensed under the GNU General Public License,
Version 2 (from the Free Software Foundation). findwild is not
warranted for any purpose whatsoever, but if you find a bug, I will try
to fix it.
Origin and Contact
findwild originates from my web site at: http://kornelix.squarespace.com/findwild
Other web sites may offer it for download. Modifications could have been made.
If you have questions, suggestions or a bug to report: kornelix@yahoo.de
Screenshot

findwild
usage
Refer
to the above screenshot as needed to better understand the following.
The
toolbar [search] button starts a dialog where you enter search
criteria. You can use wildcards * and ? in all
search criteria. * matches any string, including a zero
length string, and ? matches any single character. You can
make multiple entries for search and ignore files and strings,
separated with blanks. If desired, enter a date range using either
days ago (-9999 to 0) or yyyy-mm-dd. When done, use [search all]
to begin the search.
findwild
selects and reports files according to the following rules:
- find
all files matching the search path and any search file
- discard
files not having a modification date within the specified range
- if
file name matches any ignore file, discard the file
- read
these files and find all search strings and ignore strings
- discard
files not matching the chosen "find files containing"
option:
- contain
any of the given search strings
- (or)
contain all of the given search strings
- (or)
contain all of them within the same record
- discard
files matching the chosen "ignore files containing"
option:
- contains
any of the given ignore strings
- (or)
contains all of the given ignore strings
- (or)
contains all of them in the same record
- ignore matching records meeting "ignore matching records" condition:
- matching
record has any ignore string
- (or)
matching record has all ignore strings
- if
all matching records are canceled, then the file is discarded
Wildcard
file names used for searching are made from search path + search
file(s).
If this results in
** where they are
joined, then
* is substituted.
Example:
search path =
/usr/include/*
and search
file =
*.h
This will result in
a combined search string of
/usr/include/*.h
which will
include files such as
/usr/include/err.h
and /usr/include/gtk-2.0/gdk/gdkgc.h
(*
matches all
intermediate directories).
The
search file(s) may also include subdirectories, e.g.
/usr/include/*
+ */gtk*/*.h
is a legitimate combination that will search all files
named
*.h
within
/usr/include
and within any intermediate directory beginning with
gtk.
Delimiters
define and separate strings in the searched files. Each file string,
so defined, will be matched against the search and ignore strings. If
you use no delimiters, then each file record (row of text) is treated
as one string for matching.
Note
that wildcards are needed to make findwild work like other file
search programs. A record containing the string xxx#aaabbbbcc@yyy
will not match abbb but will match *abbb*
and a*bcc (assuming that '#' and '@'
are included in the delimiters list).
It
makes no sense to include a delimiter character in the search string.
If you need to search for strings containing any of the default
delimiters, then remove these delimiters for this search. The default
delimiters work as needed for most cases.
If
list matching records is checked, the output includes all
records with matching strings. Otherwise only file names are reported
along with the count of matching records.
Each
new set of search criteria is saved in the combo box drop-down lists,
and these can be recalled using the buttons. The button [save
criteria] saves the most recent 20 entries in the file
~/.findwild/search_criteria which also initializes the next
findwild session.
The
toolbar [save] button saves the search results to a file.
[print] prints them on the default printer. [clear]
clears the output window. [kill] stops a running search.
The button
[search hits] uses the list of files found by the previous
search instead of using the search path and search file(s) inputs. If
you are narrowing the search criteria to home in on the desired
files, this can speed things up.
Note on
file types
It
would be logical to automatically exclude non-text files from the
search. In Linux, reliable determination of text files is quite
involved: fork a "file" shell command which reads the file and
processes it against the "magic numbers" file to make an educated guess
at what kind of file it is. I experimented and concluded that it is
usually faster to simply process all files. This could produce
meaningless accidental search string matches for binary files. It is
better to specify file types in the search criteria, e.g. *.txt,
*.html, etc.