If you need to recursively traverse a directory tree, there are two ways to do it:
Build up pathnames of increasing length as you go, .../.../... etc.
Erm... in fact a modern implementation will likely use the
ftw
is short for file tree walk
See also a very useful resource: http://rosettacode.org/wiki/Walk_a_directory/Recursively#Library:_POSIX
The method 2 seemlessly handles situations where a component in the path is renamed.
It also denies anyone from unmounting the directory while it's being searched; the kernel will refuse to unmount the directory if it's in use, which includes being the cwd of some process.
I believe the find
uses method 2 as you are able to execute commands as you go (with the exec
option)