You test for a directory with -type d
. You invert the sense of a test with !
.
Therefore:
find . -name something ! -type d
This would find everything called something
in or below the current directory, but it would not report any directory called something
.
If you want to ignore ./fold/something
specifically, use a negated -path
test:
find . -name something ! -path ./fold/something
Note that the pathname that you use in the -path
test should match the full path from the top-level search path (.
).
If you want to stop find
from reporting any directory called something
, and also stop it from even entering those directories, use -prune
:
find . \
-name something -type d -prune -o \
-name something -print
or, equivalently,
find . -name something \( -type d -prune -o -print \)
This would first prune any found directory called something
from the search tree. If the current path being examined is not a directory called something
, but something else called something
, then it is printed. This would not find anything called something
under ./fold/something
, regardless of its filetype (since ./fold/something
would have been removed from the search tree).