As discussed above, you often need to be careful about how the names
of files are handled by find
and other programs. If the output
of find
is not going to another program but instead is being
shown on a terminal, this can still be a problem. For example, some
character sequences can reprogram the function keys on some terminals.
See Security Considerations, for a discussion of other security
problems relating to find
.
Unusual characters are handled differently by various actions, as described below.
Always print the exact file name, unchanged, even if the output is going to a terminal.
Always print the exact file name, unchanged. This will probably change in a future release.
Unusual characters are always escaped. White space, backslash, and double quote characters are printed using C-style escaping (for example ‘\f’, ‘\"’). Other unusual characters are printed using an octal escape. Other printable characters (for ‘-ls’ and ‘-fls’ these are the characters between octal 041 and 0176) are printed as-is.
If the output is not going to a terminal, it is printed as-is. Otherwise, the result depends on which directive is in use:
These expand to values which are not under control of files’ owners, and so are printed as-is.
These have values which are under the control of files’ owners but which cannot be used to send arbitrary data to the terminal, and so these are printed as-is.
The output of these directives is quoted if the output is going to a
terminal. The setting of the LC_CTYPE
environment
variable is used to determine which characters need to be quoted.
This quoting is performed in the same way as for GNU ls
. This
is not the same quoting mechanism as the one used for ‘-ls’ and
‘fls’. If you are able to decide what format to use for the
output of find
then it is normally better to use ‘\0’ as a
terminator than to use newline, as file names can contain white space
and newline characters.
Quoting is handled in the same way as for the ‘%p’ directive of
‘-printf’ and ‘-fprintf’. If you are using find
in a
script or in a situation where the matched files might have arbitrary
names, you should consider using ‘-print0’ instead of
‘-print’.
The locate
program quotes and escapes unusual characters in
file names in the same way as find
’s ‘-print’ action.
The behaviours described above may change soon, as the treatment of unprintable characters is harmonised for ‘-ls’, ‘-fls’, ‘-print’, ‘-fprint’, ‘-printf’ and ‘-fprintf’.