grep命令和find命令

 

一、find命令

1.基础使用说明:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]   ( [-H] [-L] [-P] [-D debugopts] [-Olevel]不常用)

日常用:

find [path...] [expression] 

其中expression可以分为——“-options [-print -exec -ok  ]”

即:

find   path   -option   [  -print ]   [ -exec   -ok   command ]   {} \;

path: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

-options:指定find命令的常用选项,下节详细介绍

-print:find命令将匹配的文件输出到标准输出

-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;  注意{   }和\;之间的空格 。

例:find . -type f -exec ls -l {  } \;  用ls -l 命令列出匹配到的文件。

-ok:和-exec的作用相同,但在执行每一个命令前都会提示用户是否同意。

2.options说明

-name   filename             #查找名为filename的文件

find . -name "*.c" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件
-perm                              #按执行权限来查找

find . -perm 755 –print 在当前目录下查找文件权限位为755的文件
-user    username             #按文件属主来查找

find ~ -user sam –print 在$HOME目录中查找文件属主为sam的文件
-group groupname            #按组来查找

find /apps -group gem –print 在/apps目录下查找属于gem用户组的文件 

-nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存


-mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

find / -mtime -5 –print 在系统根目录下查找更改时间在5日以内的文件 
find /var/adm -mtime +3 –print 在/var/adm目录下查找更改时间在3日以前的文件

-ctime    -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-newer   f1 !f2               #查更改时间比f1新但比f2旧的文件


-type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件

find /etc -type d –print 在/etc目录下查找所有的目录 
find . ! -type d –print 在当前目录下查找除目录以外的所有类型的文件 
find /etc -type l –print 在/etc目录下查找所有的符号链接文件
-size      n[c]               # 查找文件长度为n块的文件,带有c时表示文件长度以字节计

find . -size +1000000c –print 在当前目录下查找文件长度大于1 M字节的文件 
find /home/apache -size 100c –print 在/home/apache目录下查找文件长度恰好为100字节的文件 
find . -size +10 –print 在当前目录下查找长度超过10块的文件(一块等于512字节)
-depth                       #使查找在进入子目录前先行查找完本目录
-fstype                      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                %;      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-prune                       #忽略某个目录

二、grep命令

1.简介:

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.使用说明:

grep [OPTIONS] PATTERN [FILE...] 
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

  • grep命令用于搜索由Pattern参数指定的模式,并将每个匹配的行写入标准输出中。这些模式是具有限定的正则表达式。
  • 如果在FILE参数中指定了多个名称,grep命令将显示包含匹配行的文件的名称。
  • 对 shell 有特殊含义的字符 ($, *, [, |, ^, (, ), \ ) 出现在 Pattern参数中时必须带双引号。
  • 如果 Pattern参数不是简单字符串,通常必须用单引号将整个模式括起来。在诸如 [a-z], 之类的表达式中,-(减号)cml 可根据当前正在整理的序列来指定一个范围。整理序列可以定义等价的类以供在字符范围中使用。如果未指定任何文件,grep会假定为标准输入。

3.OPTIONS主要参数

-c:只打印匹配的行数,不显示匹配的内容。

-?:同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

-i:不区分大小写(只适用于单字符)。

-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。

-q,--quiet:取消显示,只返回退出状态。0则表示找到了匹配的行。

-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:反检索,只显示不匹配的行

4.grep正则表达式元字符集(基本集)

^  锚定行的开始 如:'^grep'匹配所有以grep开头的行。

$  锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

.   匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

*  匹配零个或多个先前字符 如:' *grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^]  匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。

\(..\)  标记匹配字符,如:'\(love\)',love被标记为1。

\<  锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。

\>  锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

x\{m\} 连续重复字符x,m次,如:'o\{5\}'匹配包含连续5个o的行。

x\{m,\} 连续重复字符x,至少m次,如:'o\{5,\}'匹配至少连续有5个o的行。

x\{m,n\} 连续重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配连续5--10个o的行。

\w  匹配一个文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

\W  w的反置形式,匹配一个非单词字符,如点号句号等。\W*则可匹配多个。

\b  单词锁定符,如: '\bgrep\b'只匹配grep,即只能是grep这个单词,两边均为空格。

参考文档:

Linux find 用法示例

linux grep命令

【日常小记】linux中强大且常用命令:find、grep

猜你喜欢

转载自blog.csdn.net/weixin_39731083/article/details/81151796