Source: Wu Qin (Tyler)
Link: cnblogs.com/skynet/archive/2010/12/25/1916873.html
Working under Linux, some commands can greatly improve efficiency. This article to introduce you to find, grep command, his brother can be regarded as a mandatory Linux command, I almost every day to use them. The structure of this article is as follows: Find command
General form of Find command
Common options and examples for Find commands
Find and Xargs grep command
General form of grep command
grep regular Expression meta-character set (base set)
Common options for grep commands and instance 1, find command
The Find command is a ubiquitous command, one of the most useful commands in Linux. The Find command is used to search for files in a directory (and subdirectories), and you can specify matching criteria, such as locating files by file name, file type, user, or even timestamp. Here is an example to experience the power of the Find command.
1. The general form of the Find command
The general form of the find command given in the man document is:
Find [-h] [l] [P] [D-debugopts] [-olevel] [path ...] [Expression]
In fact [-h] [-l] [P] [-D debugopts] [-olevel] These options are not commonly used (at least in my daily work, not used), the above find command of the common form can be simplified to:
Find [path ...] [Expression]
Path
The directory path found by the Find command. For example, to represent the current directory, with/to represent the system root directory
expression
Expression can be divided into--"-options [-print-exec-ok ...]"
-options
Specifies the common options for the Find command, which is described in detail in the following section
-print
The find command outputs matching files to standard output
-exec
The Find command executes the shell command given by the parameter to the matching file. The form of the corresponding command is ' command ' {};, note the space between {} and;
Find./-size 0-exec rm {};
Delete a file with a file size of zero (you can also do this: Rm-i find./-size 0 or get./-size 0 | Xargs Rm-f &)
To list the matching files with the Ls-l command, you can place the Ls-l command in the-exec option of the Find command:
Find. -type f-exec ls-l {};
Look for files in the/logs directory that were changed before 5th and delete them:
Find/logs-type f-mtime +5-exec rm {};
-ok
The same as-exec, except that the shell command given by the parameter is executed in a more secure mode, and before each command is executed, a prompt is given to allow the user to determine whether or not to execute.
Find. -name "*.conf"-mtime +5-ok rm {};
Finds all file names in the current directory to. Log end, change the time in the file above 5th, and delete them, but before deleting the first hint
Others have summed up the structure of the Find command:
Find start_directory test
options
criteria_to_match
action_to_perform_on_results
common options and examples for 2.find commands
-name
Find files by file name.
Find/dir-name FileName: Find the file named filename under the/dir directory and its subdirectories
Find. -name "*.C": in the current directory and its subdirectories (with "." Indicates that any file with the extension "C" is found in
-perm
Locate files by file permissions.
Find. -perm 755–print: Find files in the current directory with a file permission bit of 755, which is the file owner can read, write, execute, other users can read, execute the file
-prune
Use this option to make the Find command not look in the currently specified directory, and if you use the-depth option, then-prune will be ignored by the Find command.
Find/apps-path "/apps/bin"-prune-o–print: Find files in the/apps directory, but do not want to find them in the/apps/bin directory
Find/usr/sam-path "/usr/sam/dir1"-prune-o–print: Find all files that are not in the Dir1 subdirectory under the/usr/sam directory
-user
Locate files according to the owner of the file.
Find ~-user Sam–print: Locate files in the $home directory that are owned by the owner as Sam
-group
Locate the file by the group to which the file belongs.
Find/apps-group Gem–print: Find files belonging to the Gem User group under the/apps directory
-mtime-n +n
According to the file change time to find the file, –n indicates that the file change time is now n days, + n indicates that the file change time is now N days ago.
Find/-mtime-5–print: Finds files in the system root that are within 5th of the change time
Find/var/adm-mtime +3–print: Find files in the/var/adm directory before the change time before 3rd
-nogroup
Finds a file that does not have a valid owning group, that is, the group that the file belongs to does not exist in/etc/groups.
Find/–nogroup-print
-nouser
Finds a file without a valid owner, that is, the owner of the file does not exist in/etc/passwd.
Find/home-nouser–print
-newer file1! file2
The Find change time is newer but older than the file File1 file file2.
-type
Find a type of file, such as:
b– block device files.
D-Directory.
C-Character device files.
p– pipeline file.
l– Symbolic link file.
F – Common Files.
Find/etc-type d–print: Find all directories under the/ETC directory
Find. ! -type D–print: Find all types of files except directories in the current directory
Find/etc-type L–print: Find all the symbolic link files in the/etc directory
-size n: [C] finds files with a file length of n blocks, with C indicating the length of the file in bytes.
Find. -size +1000000c–print: Find files with a file length greater than 1 m bytes in the current directory
Find/home/apache-size 100c–print: Find files with a file length of exactly 100 bytes in the/home/apache directory
Find. -size +10–print: Find files in the current directory that are longer than 10 blocks (one is equal to 512 bytes)
-depth: When looking for a file, first look for the files in the current directory and then look in their subdirectories.
Find/-name "CON. File "-depth–print: It will match all the files first and then go to the subdirectory to find
-mount: Does not cross the file system mount point when locating files.
Find. -name "*. XC "-mount–print: Find files in the current directory at the end of the file name XC (not into other file systems)
-follow: If the find command encounters a symbolic link file, it tracks to the file that the link points to.
3.find and Xargs
When you use the-EXEC option of the Find command to process matching files, the Find command passes all matching files to exec execution. However, some systems have limits on the length of commands that can be passed to exec, so that an overflow error occurs several minutes after the find command has been run. The error message is usually either "too long" or "parameter column overflow." This is the use of the Xargs command, especially with the Find command.
The Find command passes the matching file to the Xargs command, and the Xargs command gets only a portion of the file at a time instead of all, unlike the-exec option. This allows it to process the first part of the file, then the next batch, and so on.
In some systems, using the-EXEC option initiates a corresponding process for processing each matching file, rather than executing all the matching files as parameters, so that in some cases there will be too many processes to degrade the performance of the system, thus inefficient;
With the Xargs command, there is only one process. In addition, when using the Xargs command, whether to get all the parameters at once, or get the parameters in batches, and each time the number of parameters will be obtained according to the option of the command and the corresponding adjustable parameters in the system kernel.
See how the Xargs command is used with the Find command, and give some examples.
Find. -type F-print | Xargs file: Find each of the common files in the system and then use the Xargs command to test which types of files they belong to
Find/-name "core"-print | Xargs echo "" >/tmp/core.log: Find the Memory information dump file (core dump) throughout the system, and then save the results to the/tmp/core.log file
Find. -type F-print | Xargs grep "hostname": Search the word hostname in all normal files with the grep command
Find./-mtime +3-print|xargs Rm-f–r: Delete everything from 3 days ago (find. -ctime +3-exec RM-RF {};)
Find./-size 0 | Xargs rm-f &: Delete files with a file size of zero
The Find command, in conjunction with exec and Xargs, enables users to execute almost all commands on a file that matches. 2. grep command
grep (Global search Regular expression (RE) and print out of the line, a comprehensive search for regular expressions and print out rows) is a powerful text search tool that uses regular expressions to search for text. and print out the matching rows.
1. The General options and examples of GREP commands
grep [OPTIONS] pattern [FILE ...]
grep [OPTIONS] [e-pattern |-f file] [file ...]
The grep command searches for patterns specified by the pattern parameter and writes each matching row to the standard output. These patterns are qualified regular expressions that use the ED or egrep command style. If more than one name is specified in the file parameter, the grep command displays the name of the file that contains the matching row. Characters that have special meaning to the shell ($, *, [, |, ^, (,),) must be enclosed in double quotes when they appear in the pattern parameter.
If the pattern parameter is not a simple string, it is usually necessary to enclose the entire mode in single quotes. In expressions such as [A-z],-(minus) CML can specify a range based on the sequence currently being sorted. An collating sequence can define an equivalent class for use in a character range. If no files are specified, grep assumes the standard input.
2. grep regular expression meta-character set (base set)
^ : The beginning of the anchoring line
such as: ' ^grep ' matches all rows beginning with grep.
$ : End of Anchor Line
such as: ' grep$ ' matches all rows that end with grep.
. : Matches a character that is not a line feed
For example: ' GR.P ' matches the GR followed by an arbitrary character followed by P.
* : Match 0 or more previous characters
such as: ' *grep ' matches all one or more spaces immediately following the grep row ... * together, representing any character.
[] : matches a specified range of characters
such as ' [Gg]rep ' matches grep and grep.
[^] : Matches a character that is not in the specified range
For example, the ' [^a-fh-z]rep ' match does not contain a letter beginning with a-f and H-z, followed by the rep line.
(..) : Tag Matching characters
For example: ' (Love) ', Love is marked as 1.
> : Anchoring the end of a word
such as ' grep> ' matches a line containing a word that ends with grep.
x{m} : Continuous repeating character x,m times
such as: ' O{5} ' matches rows containing 5 consecutive O.
x{m,} : Continuous repeat character x, at least m times
such as: ' O{5,} ' matches rows with at least 5 consecutive O.
X{m,n} : Continuous repeat character x, at least m times, no more than n times
such as: ' o{5,10} ' matches a row of consecutive 5–10 O.
W : Match a literal and numeric character, i.e. [a-za-z0-9]
For example: ' Gw*p ' matches with G followed by 0 or more characters or numbers, followed by P.
w : Inverse form of w, matching a non-word character
such as the point number period. W* can match multiple.
b : Word lock character
such as: ' BGREPB ' only match grep, that is, only grep this word, both sides are spaces.
3. The common options and examples of GREP commands -?
Displays both the top and bottom of the matching row. Rows, such as: grep-2 pattern filename Displays the top and bottom 2 rows of matching rows at the same time. -b,–byte-offset
Print the block number in which the line is printed before the matching line. -c,–count
Prints only the number of rows that match and does not display the matching content. - F File,–file=file
Extracts the template from the file. The empty file contains 0 templates, so nothing matches. -h,–no-filename
When searching for multiple files, the matching filename prefix is not displayed. -i,–ignore-case
ignores case differences. -q,–quiet
Suppresses display and returns only the exit status. 0 indicates that a matching row was found. -l,–files-with-matches
Print a list of files that match the template. -l,–files-without-match
Print a list of files that do not match the template. -n,–line-number
Print the line number before the matching line. -s,–silent
Does not display error messages about the absence or inability to read files. -v,–revert-match
Reverse retrieve, showing only rows that do not match. -w,–word-regexp
If it is referenced, the expression is searched as a word. -v,–version
Displays software version information.
=====
Ls-l | grep ' ^a ': Filters the contents of the LS-L output through a pipe, showing only the rows that start with a.
grep ' Test ' d*: Displays all the rows that contain test in a file that starts with D.
grep ' Test ' AA bb cc: Shows the line matching test in the aa,bb,cc file.
grep ' [A-z] ' AA: Displays all lines that contain at least 5 consecutive lowercase characters for each string.
grep ' W (es) t. ' AA: If West is matched, es is stored in memory, labeled as 1, and then searched for any character (.), followed by another ES (), and found to show the line. If you use Egrep or GREP-E, you do not use the "" number to escape, directly written ' W (es) t.* ' on it.
Grep-i pattern Files: Case-insensitive search, which is case-sensitive by default.
Grep-l pattern files: Only matching file names are listed.
Grep-l pattern Files: Lists mismatched file names.
Grep-w pattern files: matches only the entire word, not part of the string (such as matching ' magic ', not ' magical ').
Grep-c number pattern files: matching contexts display the [number] line, respectively.
grep pattern1 | PATTERN2 files: Displays rows that match pattern1 or pattern2.
grep pattern1 Files | grep pattern2: Displays rows that match both PATTERN1 and pattern2.
references: about Linux
A detailed description of the grep command used, http://fanqiang.chinaunix.net/system/linux/2007-03-15/5110.shtml Linux file Lookup command Find,xargs detailed, http:// www.linuxsir.org/main/?q=node/137#1.1 Man document (Mans Find, man grep)