FFIND(1)

NAME
ffindcmd, ffind - find files by name or by other characteristics in FSP database

SYNOPSIS
ffindcmd pathname-list expression
ffind pathname-list expression

DESCRIPTION
ffindcmd recursively descends the directory hierarchy for each pathname in the pathname-list, seeking files that match a logical expression written using the operators listed below.

USAGE

  Operators
In the descriptions, the argument n is used as a decimal integer where +n means more than n, -n means less than n, and n means exactly n. All three maybe used if an integer argument is needed.

-name filename
    True if the filename argument matches the current file name. Shell argument syntax can be used if escaped (watch out for [, ? and *).

-prune
    Always yields true. Has the side effect of pruning the search tree at the file. That is, if the current path name is a directory, ffindcmd will not descend into that directory.

-type c
    True if the type of the file is c, where c is one of:

        d   for directory
        f   for plain file

-size n
    True if the file is n blocks long (512 bytes per block). If n is followed by a c, the size is in characters.

-time n
    True if the file has been accessed/modified/changed in n days.

-exec command
    True if the executed command returns a zero value as exit status. The end of command must be punctuated by an escaped semicolon. A command argument {} is replaced by the current pathname.

-ok command
    Like -exec except that the generated command is written on the standard output, then the standard input is read and the command executed only upon response y.

-print
    Always true; the current pathname is printed.

-ls Always true; prints current pathname together with its associated statistics. These include size in blocks (512 bytes), protection mode, number of hard links, user, group, size in bytes, and modification time.
    Note: formatting is done internally, without executing the fls program.

-newer file
    True if the current file has been modified more recently than the argument filename.

(expression)
    True if the parenthesized expression is true.
    Note: Parentheses are special to the shell and must be escaped.

!primary
    True if the primary is false (! is the unary not operator).

primary1 [ -a ] primary2
True if both primary1 and primary2 are true. The -a is not required. It is implied by the juxtaposition of two primaries.

primary1 -o primary2
True if either primary1 or primary2 is true (-o is the or operator).

ffindcmd will perform csh file name globbing based on file and directory information obtained from the FSP database.

Since user's command shells generally cannot do the proper globbing for this program, it is recommended that user defines a shell alias or function to turn off command shell globbing before running this program. csh example:

alias ffind \(set noglob\; exec ffindcmd \!\*\)

EXAMPLE
To find all the files called intro.ms starting from the current directory:

example% ffind . -name intro.ms -print
./manuals/assembler/intro.ms
./manuals/sun.core/intro.ms
./manuals/driver.tut/intro.ms
./manuals/sys.manager/uucp.impl/intro.ms
./supplements/general.works/unix.introduction/intro.ms
./supplements/programming.tools/sccs/intro.ms
example%

To recursively print all files names in the current directory and below, but skipping SCCS directories:

example% ffind . -name SCCS -prune -o -print
example%

To recursively print all files names in the current directory and below, skipping the contents of SCCS directories, but printing out the SCCS directory name:
example% ffind . -print -name SCCS -prune
example%

To remove files named a.out or *.o that have not been accessed for a week or more
example% ffind . \( -name a.out -o -name *.o \) -time +7 -exec frm {} \;

ENVIRONMENT

The following variables associate this program with a FSP database:

FSP_HOST
    The name or internet number of the machine with the FSP server.

FSP_PORT
    The port number of the UDP socket used by the FSP server.

FSP_LOCALPORT
    The port number of the UDP socket used by FSP client utilities. The only reason to define this variable is to ensure mutual exclusion of client commands when none of the udp packet multiplexing mechanisms are enabled during compile time. You may pick any number not currently used for other purposes.

FSP_DIR
    The current working directory of the client in the FSP database. The root of the database is /.

FSP_TRACE
    If this variable is set, some commands will display the number of kilo-byte blocks transferred as transfer progresses. Also shown will be an indication of the network speed in the form of characters per second and the retries on not answered commands.

FSP_TIMEOUT
    If this variable is set, it contains the timeout value. The default value is 4. No function if program was compiled without timeout code.

SEE ALSO
fcatcmd(1), fcdcmd(1), fgetcmd(1), fgrabcmd(1), flscmd(1), fmkdir(1), fprocmd(1), fput(1), frmcmd(1), frmdircmd(1), fver(1), fducmd(1), fhostcmd(1), ffindcmd(1), fspd(1), fsp_prof(5)

BUGS
There seems to be a problem using an alias as command to execute. But since there is no globbing performed on the pathname the original FSP commands may be used instead.