---
name: "ftff"
section: "1"
platform: "linux"
package: "whichman"
version: "2.4-10"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ftff"
---

# ftff(1)

fault tolerant file find utility

## NAME

ftff - fault tolerant file find utility

## SYNOPSIS

**ftff** \[-#fFhIpq\]\[-t#\]\[start\_directory\] file\_to\_find

## DESCRIPTION

**ftff** recursively descends the directory hierarchy and reports all objects in the file system with a name that approximately matches the given filename.

**ftff** achieves  fault tolerance  by calculating the  so called Weighted Levenshtein Distance. The Levenshtein Distance is defined as the  minimum  number of  character insertions, deletions and replacements that transform  a string  *A* into a string  *B.*

**ftff** behaves like

'find start\_directory -name file\_to\_find -print'

with the following differences:

- \-

  ftff is fault tolerant

- \-

  ftff is NOT case sensitive

- \-

  the level of fault tolerance can be adjusted by specifying the optional parameter  **tolerance.** A  **tolerance** of 0 specifies exact match.

## OPTIONS

- *-h*

  Prints a little help/usage information.

- *-f*

  Follow symbolic links on directories. Note: a symbolic link like "somewhere -\> .."  causes naturally an endless loop.  By default **ftff** does not follow symbolic links to directories.

- *-F*

  Classify the file type by appending a character to each file name. This character is:\
   *'\*'* for regular files that are  executable\
   *'/'* for directories\
   *'@'* for symbolic links\
   *'\|'* for FIFOs\
   *'='* for sockets

- *-p*

  print the actual distance value in front of the filename. This value is equal to the number of insertions, deletions and replacements necessary to transform the file that was found into the search key (the file\_to\_find).

- *-q*

  keep quiet and do not print any warning about non readable directories.

- *-# or -t#*

  Set the fault tolerance level to #. The fault tolerance level is an integer in the range 0-255. It specifies the maximum number of errors permitted in finding  the approximate match. The default tolerance is (strlen(searchpattern) - number of wildcards)/6 + 1

- *-I*

  Do case sensitive search (default is case in-sensitive)

- *file\_to\_find*

  The filename to search for.   '\*' and  '?' can be used as wildcards.  \
   '?' denotes one single character.  \
   '\*' denotes an arbitrary number of characters.

- *start\_directory*

  The directory to start the search. The current directory is the default.

The last argument to ftff is not parsed for options as the program needs at least one file-name argument. This means that  *ftff -x* will not complain about a wrong option but search for the file named -x.

## EXAMPLE

*ftff* samething

This will e.g. find a file called something or sameting or sum-thing or ...

To find all files that start with any prefix, have something like IOComm in between and end on a two letter suffix:

*ftff* '\*iocomm.??'

To find all files that exactly start with the prefix DuPeg:

*ftff -0* 'dupeg\*'

## BUGS

The wildcards  **'?'** and  **'\*'** can not be escaped. These characters function always as wildcards. This is however not a big problem since there is normally hardly any file that has these characters in its name.

## AUTHOR

Guido Socher (guido@linuxfocus.org)

## SEE ALSO

[**whichman**(1)](/whichman/1.md), [**find**(1)](/find/1.md)
