GTKFIND(1)

NAME
gtkfind - a graphical file finding program

SYNOPSIS
gtkfind [-vanish] [-help] [-version]

DESCRIPTION
gtkfind is a graphical find program written using the GTK+ toolkit. Operation should be straightforward. By default the program will search the / directory and match all files and directories. You can narrow the match by using shell wildcards and curly braces. There are also other file attributes you can match against, like owner and type.

TUTORIAL
First you must choose a directory in which to search. You can just type the directory name, or you can use the Choose Directory button. This button brings up a file browser which you can use to select a directory. You can also select whether or not you want to search the subdirectories of the directory you have chosen. You may use the ~ (tilde) character to specify a user's directory, as you would in the shell. For example, ~ will search your home directory, and ~/src will search the directory src under your home directory. Similarly, ~mattg will search the home directory of user mattg.

Next, you must decide which files you want to match. Each "card" has settings you can use to select a file. Keep in mind that you don't have to fill in all the cards. The default is to match everything.

  Filename
On this card, you can enter the name of the file you want to match. If the simple substring button is selected, the find will match any filename containing the string you enter. For example, the string .txt will match the files foo.txt and bar.txt, but not the file baz.text. If the wildcard pattern button is selected, you can use the following wildcard characters just like in the shell:
    * - this character will match any or no characters. For example, the pattern *.txt will match files named foo.txt and .txt, but not foo.text.
    ? - this character will match any one character. For example, wibble.? will match files named wibble.c and wibble.s, but not wibble. or foo.c.
    [..] - square braces can be used to show a set of characters, any one of which will match. For example, *.[ch] will match foo.c and foo.h. A - inside the braces can be used to match a range, for example [1-5] will match the characters 1,2,3,4,5. You can match an [ or ] by putting them last or first, eg [[] will match [.
    {..} - curly braces will match comma separated strings. For example, the pattern {foo,bar}.c will match foo.c and bar.c.
    (..) - parentheses will store portions of the match in registers. A gtkfind register is a place where a string is stored. There are 10 registers, and by default the complete name of the file that is matched is stored in register 0. The nine other registers are filled left to right. So the pattern (*)-backup.(??) which matches the file named TUES-backup.18, stores the string "TUES-backup.18" in register 0, the string "TUES" in register 1, and the string "18" in register 2. You can insert these register values into a shell command which you can run when you match a filename. This is explained under Shell Commands below.

  atime
This card allows you to match a file's access time. This is the last time that the file was read or executed. You can manipulate the counters to set the time and date. Hours are given in military or 24-hour time. You can choose whether you want to match files with access times earlier than, equal to, or later than the time you have entered. This is not an exclusive or; you can match files that have atimes earlier than or equal to the time you have specified.

  ctime
This is exactly the same as the atime card above, except that it matches against the last time the file's inode was changed. This happens whenever a file is created, when its atime or mtime is changed, when its mode is changed, and other times too.

  mtime
Ditto, except that this matches against mtime, which is the last time a file was modified, ie written to. If you are curious about these times, you can use the stat(1) program to find out the atime, mtime, and ctime of files.

  Mode
This card allows you to match against a file's mode or permissions. You can match against multiple permissions.

  Type
This card allows you to match against a file's type. This includes whether the file is a directory, a regular file, or any of the special files (symbolic links, devices, etc.). You can also match against files that have the setuid, setgid, or sticky bits set.

  Owner
Here you can match against a file's owner or group. You can choose to match against the login name or group name (such as mattg), or against the User ID or Group ID numbers (uid or gid). You can also match files without a known user or group by selecting the Match unknown users or Match unknown groups toggle buttons.

  Contents
This card lets you enter a simple substring or wildcard pattern to match against the contents of files. For example, to match all files containing the string linux you would either select the simple substring option and enter linux , or select the wildcard pattern option and enter the pattern *linux*.

  Shell Commands
When you are done selecting the criteria to match a file against, you get to choose what you want to do with the files that meet those criteria. The default action is to display the filenames in a window. You can also choose to print the filenames to the standard output, or not to print anything at all.

If the Print extra data radio button is selected, data about matched files is printed in a format similar to the format of ls -l. The default is to simply print the filenames, one per line.

One thing you might want to do now is run a shell command on each file as it is matched. To do this, select the Run a shell command box and enter the text of your command in the text space provided. You can insert a register by using the characters \register-number. So for example, given the pattern (*).txt you can use the command line mv \0 \1.old to move the files foo.txt and bar.txt to foo.old and bar.old, respectively.

  Finding Files
When you have selected the criteria you want to match against and decided whether or not you want to run a shell command against the files you match, you can click the Find button to run the search. Depending on whether you selected Print to stdout or Print to window the results will be printed to the standard output of gtkfind or will be displayed in a window. If the Always print filename button is selected, gtkfind will print the name of each file that matches its criteria. The output of any shell commands run on a file will appear beneath the filename. This is often helpful when running shell commands.

While the search is running, a Stop button will appear in place of the Find button. Clicking this button will stop the search.

The Quit button quits gtkfind. The Clear button clears all search criteria, but does not change the Shell command or Search directory settings. The Help button opens an xterm(1) showing this manual page, if this manual page is installed on your system. The Save button will save your search as a shell script using find(1). You can then run the search from the prompt. Note that if you want to run additional shell commands on the files you find, you will have to add them to the file manually (only the search is saved). Note also that if you do not have the GNU utilities these shell scripts may not work. You can get the GNU tools from ftp.gnu.org and many other sites.

OPTIONS

-vanish
    Exit after the first run. By default, the program sticks around and can be used multiple times.

-help
    Print a helpful message to standard output and exit.

-version
    Print the program version to standard output and exit.

BUGS
The Save command only works reliably for very simple searches. find(1) has trouble with complex conditionals.

SEE ALSO
find(1), file(1), grep(1), mktmp(1), stat(1), touch(1)

COPYLEFT
gtkfind is copyright 1999 by Matthew Grossman <mattg@oz.net> under the terms of the GNU GPL. See the file COPYING in the source distribution for details.

MAINTAINER
mattg@oz.net