2.1.6 File and Directory Selection
- Process a binary file as if it were text;
this is equivalent to the ‘--binary-files=text’ option.
- If a file's allocation metadata,
or if its data read before a line is selected for output,
indicate that the file contains binary data,
assume that the file is of type type.
Non-text bytes indicate binary data; these are either data bytes
improperly encoded for the current locale, or null bytes when the
-z (--null-data) option is not given (see Other Options).
By default, type is ‘binary’,
and grep normally outputs either
a one-line message saying that a binary file matches,
or no message if there is no match.
When processing binary data, grep may treat non-text bytes
as line terminators; for example, the pattern ‘.’ (period) might
not match a null byte, as the null byte might be treated as a line
terminator even without the -z (--null-data) option.
If type is ‘without-match’,
grep assumes that a binary file does not match;
this is equivalent to the -I option.
If type is ‘text’,
grep processes a binary file as if it were text;
this is equivalent to the -a option.
Warning: ‘--binary-files=text’ might output binary garbage,
which can have nasty side effects
if the output is a terminal and
if the terminal driver interprets some of it as commands.
- -D action
- If an input file is a device, FIFO, or socket, use action to process it.
If action is ‘read’,
all devices are read just as if they were ordinary files.
If action is ‘skip’,
devices, FIFOs, and sockets are silently skipped.
By default, devices are read if they are on the command line or if the
-R (--dereference-recursive) option is used, and are
skipped if they are encountered recursively and the -r
(--recursive) option is used.
This option has no effect on a file that is read via standard input.
- -d action
- If an input file is a directory, use action to process it.
By default, action is ‘read’,
which means that directories are read just as if they were ordinary files
(some operating systems and file systems disallow this,
and will cause grep
to print error messages for every directory or silently skip them).
If action is ‘skip’, directories are silently skipped.
If action is ‘recurse’,
grep reads all files under each directory, recursively,
following command-line symbolic links and skipping other symlinks;
this is equivalent to the -r option.
- Skip files whose name matches the pattern glob, using wildcard
matching. When searching recursively, skip any subfile whose base
name matches glob; the base name is the part after the last
‘/’. A pattern can use
‘*’, ‘?’, and ‘[’...‘]’ as wildcards,
\ to quote a wildcard or backslash character literally.
- Skip files whose name matches any of the patterns
read from file (using wildcard matching as described
- Skip any directory whose name matches the pattern glob. When
searching recursively, skip any subdirectory whose base name matches
glob. Ignore any redundant trailing slashes in glob.
- Process a binary file as if it did not contain matching data;
this is equivalent to the ‘--binary-files=without-match’ option.
- Search only files whose name matches glob,
using wildcard matching as described under --exclude.
- For each directory operand,
read and process all files in that directory, recursively.
Follow symbolic links on the command line, but skip symlinks
that are encountered recursively.
Note that if no file operand is given, grep searches the working directory.
This is the same as the ‘--directories=recurse’ option.
- For each directory operand, read and process all files in that
directory, recursively, following all symbolic links.