2 SC2061
Joachim Ansorg edited this page 2021-11-12 19:26:41 +01:00

Quote the parameter to -name so the shell won't interpret it.

Problematic code:

find . -name *.txt

Correct code:

find . -name '*.txt'

Rationale:

Several find options take patterns to match against, including -ilname, -iname, -ipath, -iregex, -iwholename, -lname, -name, -path, -regex and -wholename.

These compete with the shell's pattern expansion, and must therefore be quoted so that they are passed literally to find.

The example command may end up executing as find . -name README.txt after the shell has replaced the *.txt with a matching file README.txt from the current directory.

This may happen today or suddenly in the future.

Exceptions:

None.