---
name: "sfind"
section: "1"
platform: "linux"
package: "shapetools"
version: "1.4pl6-15+b1"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sfind"
---

# sfind(1)

shapeTools RMS recursively descend a system hierarchy

## NAME

sfind - shapeTools RMS recursively descend a system hierarchy

## SYNOPSIS

**sfind** \[**-subs** \| **-comp**\] *directory* \[*command*\]

## DESCRIPTION

**Sfind** recursively descends the system hierarchy of a software system managed by the shapeTools Release Management System (shapeTools RMS). Sfind starts it's search from  *directory* downwards. According to the shapeTools RMS conventions, *directory* must contain a Shapefile which lists the subsystems in the variable `SUBSYSTEMS` and the subsystem components in the variable `COMPONENTS`. Each subsystem is visited.

If no *command* is specified, sfind echoes the pathnames of the subsystems it finds, or, if the option **-comp** is given, the pathnames of the components of each subsystem.

When a *command* is given, it is executed in the directory of each subsystem.  The string \`\`{}'' in *command* is replaced by the pathname of the subsystem or component.

## OPTIONS

- **-subs**

  *command* is invoked for each subsystem.  This is the default.  \`\`{}'' in *command* is replaced by the pathname of the subsystem.

- **-comp**

  *command* is invoked for each component. \`\`{}'' in *command* is replaced by the pathname of the component.

## EXAMPLES

List all system components:

-

  `sfind -comp ~/development`

Show the pathnames of all versionfiles:

-

  `sfind ~/development echo -n {}/ \; shape -echo VERSIONFILE`

Echo identification of the last release of each subsystem:

-

  `sfind ~/development vl -last -format \` `\'\$__lastrelease\$\\n\'         \`\
   `` \`shape -echo VERSIONFILE\` ``

Necessary quoting to echo a pair of curly braces:

-

  `sfind ~/development echo two \\{\\} braces`

## SEE ALSO

[find(1)](/find/1.md), [sh(1)](/sh/1.md), [shape(1)](/shape/1.md), [shape\_RMS(1)](/shape_RMS/1.md), [shape\_tmpl(7)](/shape_tmpl/7.md)

## CAVEATS

Quoting of shell meta characters can be tough.

## BUGS

The program is slow because [shape(1)](/shape/1.md) is called at least once for each subsystem.

When **sfind** is interrupted, usually [shape(1)](/shape/1.md) displays the message \`\`shape - interrupted'', which may be confusing.

## AUTHOR

Andreas.Lampen@cs.tu-berlin.de
