If I want to find all files with an HTML extension beneath the current directory and its subdirectories, but skip one directory, on a Linux system, I can perform a recursive search using the following command, which will exclude the contents of the directory named "private" which is directly below the current directory. The results will be placed in a file named
$ find . -path ./private -prune -o -name '*.html' -print > htmlfiles.txt
The period immediately after the
tells find to start its
search from the current directory from which the command is being
executed; I could use something like
find /somedir to start
the search in a different directory.
-path ./private -prune -o tells find that for the directory
path that is
./private - the dot (
.) represents the
current directory, so the path is the
private directory below
the current directory - don't include it in the search, i.e., "prune" that
directory from the search path. Including
-prune indicates, if the file is a directory, do not descend into it.
But it is the "dash o", i.e.,
-o which ensures that nothing is
printed from within that directory.
[ More Info ]