我们经常需要查找文件、统计信息,这就需要用到find、grep、wc等命令。
grep命令
grep是linux下常用的文本查找工具之一(其他还有awk、sed等);其是支持正则表达式的多用途文本搜索工具,常与其他命令组合使用(通过管道|)。
grep [选项] [匹配模式/查询内容] [文件...]
-c
只输出匹配行的数量
搜索时忽略大小写
不支持正则表达式,按字符串字面意思搜索
查询多文件时不显示文件名
只列出符合匹配的文件名,而不列出具体的匹配行
列出所有匹配行,并显示行号
不显示不存在或无匹配文本的错误信息
显示不包含匹配文本的所有行
匹配整词
匹配整行
递归搜索当前及子目录
禁止输出任何结果,以退出状态表示搜索是否成功
打印匹配行距文件头部的偏移量,以自己为单位
与-b结合使用,打印匹配词距头部文件的偏移量
支持扩展正则表达式
pattern正则表达式主要参数:
简单示例
$grep ‘test’ *.txt
显示所有txt文件中包含 test的行。
$grep ‘test’ aa bb cc
显示在aa,bb,cc文件中包含 test的行。
$grep ‘[a-z]\{5\}’ aa 或grep -E ‘[a-z]{5}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$grep ‘w\(es\)t.*\1′ aa
$ grep 'w/(es/)t.*/1' aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*)linux命令,这些字符后面紧跟着另外一个es(/1),找到就显示该行。【rewriterule ^(.*)$ /blog/$1】重写规则,最重要的部分,意思是当上面的rewritecond条件都满足的时候,将会执行此重写规则,^(.*)$是一个正则表达的匹配,匹配的是当前请求的url,^(.*)$意思是匹配当前url任意字符,.表示任意单个字符,*表示匹配0次或n次(n>0),后面/blog/$1是重写成分,意思是将前面匹配的字符重写成/blog/$1,这个$1表示反向匹配,引用的是前面第一个圆括号的成分,即^(.*)$中的.* ,其实这儿将会出现一个问题,后面讨论。
find命令
find命令是用来在给定的目录下查找符合给定条件的文件
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
OPTIONS参数:-P、-L、-H:控制软连接的对待方式,用的不多。
查找路径:就是个目录路径linux命令,相对和绝对都可以。
查找条件:
-size [+,-][b,k,M,G] 按文件的修改时间等查找
时间属性{-atime/-ctime/-mtime/-amin/-cmin/-mmin} [-/+]n
不带符号表示符合该数量的,带-表示符合该数量以后的,带+表示符合该数量以前的。
-perm MODE 按文件权限查找
按文件所属组
组合查找
处理动作
wc命令
wc统计文件里面有多少单词、多少行、多少字符。
wc [-lwm]选项与参数:
这些选项可以组合使用。 输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。
行数、字数、字节数、文件名
例子:
ls -l | wc -l #当前目录下的文件数
ps -ef | grep procName | wc -l # 进程数量
wc -l `find -name *.c` # .c文件数量