поиск файлов в иерархии каталогов (search for files in a directory hierarchy)
NON-BUGS
Operator precedence surprises
The command find . -name afile -o -name bfile -print
will never
print afile because this is actually equivalent to find . -name
afile -o \( -name bfile -a -print \)
. Remember that the
precedence of -a
is higher than that of -o
and when there is no
operator specified between tests, -a
is assumed.
'paths must precede expression' error message
$ find . -name *.c -print
find: paths must precede expression
find: possible unquoted pattern after predicate `-name'?
This happens when the shell could expand the pattern *.c to more
than one file name existing in the current directory, and passing
the resulting file names in the command line to find
like this:
find . -name frcode.c locate.c word_io.c -print
That command is of course not going to work, because the -name
predicate allows exactly only one pattern as argument. Instead
of doing things this way, you should enclose the pattern in
quotes or escape the wildcard, thus allowing find
to use the
pattern with the wildcard during the search for file name
matching instead of file names expanded by the parent shell:
$ find . -name '*.c' -print
$ find . -name \*.c -print