You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
3.6 KiB

Find all files with extension .py and exec permissions, grep only rows that contain *return* word.
[source.sh]
----
find /usr/share -name "*.py" -type f -executable -exec grep -Hnsw "return" {} \;
search for files in a directory hierarchy
-name pattern
Base of file name (the path with the leading directories removed) matches shell pattern pattern.
The metacharacters (`*', `?', and `[]') match a `.' at the start of the base name (this is a
change in findutils-4.2.2; see section STANDARDS CONFORMANCE below). To ignore a directory and
the files under it, use -prune; see an example in the description of -path. Braces are not
recognised as being special, despite the fact that some shells including Bash imbue braces with a
special meaning in shell patterns. The filename matching is performed with the use of the
fnmatch(3) library function. Don't forget to enclose the pattern in quotes in order to protect
it from expansion by the shell.
type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link
s socket
-exec command ;
Execute command; true if 0 status is returned. All following arguments to find are taken to be
arguments to the command until an argument consisting of `;' is encountered. The string `{}' is
replaced by the current file name being processed everywhere it occurs in the arguments to the
command, not just in arguments where it is alone, as in some versions of find. Both of these
constructions might need to be escaped (with a `\') or quoted to protect them from expansion by
the shell. See the EXAMPLES section for examples of the use of the -exec option. The specified
command is run once for each matched file. The command is executed in the starting directory.
There are unavoidable security problems surrounding use of the -exec action; you should use the
-execdir option instead.
grep searches the named input FILEs (or standard input if no files are named, or if a single hyphen-minus
(-) is given as file name) for lines containing a match to the given PATTERN. By default, grep prints
the matching lines.
print lines matching a pattern
-H, --with-filename
Print the file name for each match. This is the default when there is more than one file to
search.
-n, --line-number
Prefix each line of output with the 1-based line number within its input file. (-n is specified
by POSIX.)
-s, --no-messages
Suppress error messages about nonexistent or unreadable files. Portability note: unlike GNU grep,
7th Edition Unix grep did not conform to POSIX, because it lacked -q and its -s option behaved
like GNU grep's -q option. USG-style grep also lacked -q but its -s option behaved like GNU grep.
Portable shell scripts should avoid both -q and -s and should redirect standard and error output
to /dev/null instead. (-s is specified by POSIX.)
-w, --word-regexp
Select only those lines containing matches that form whole words. The test is that the matching
substring must either be at the beginning of the line, or preceded by a non-word constituent
character. Similarly, it must be either at the end of the line or followed by a non-word
constituent character. Word-constituent characters are letters, digits, and the underscore.
----