一、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这个单词,两边均为空格。