find指令的grep指令都可以在指定的路径或者指定的文件里面查找指定的内容;
find和grep的区别:
- find是在指定的路径或者目录里面查找指定的文件。
- grep是在指定的文件里面查找指定的内容
find:
find 【path】 【option】 filename
find的可以在【path】
路径里面查找指定的文件名。
例如:
常用的选项:
-name :可以根据文件的名称来查找
-size :可以根据文件的大小来查找
-user :根据文件的拥有者来查找
-empty :在指定的路径下查找为空的文件和目录
find—-exec选项:
在需要将find指令查找出来的文件目录进行操作的时候需要用到-exec选项。
例如,将find查找出来的内容进行输出:
find . -name filename -exec ls -l {} \;
注:
find指令将在指定路径查找到的内容作为ls的输入,使用-exec选项替换。在-exec选项的后面是多find查找到的内容的操作命令,在命令的后面是{}—–将find的内容是输出,在使用-exec选项的命令最后面必须使用;作为结尾,但是在linux里面;有很多的含义,所以需要在;前面加上一个\;
grep:
grep指令是在指定的文件里面查找指定的内容。
grep 【option】【目标字符串】 filename
常用选项:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
含有正则表达式的grep:
- \: 忽略正则表达式中特殊字符的原有含义。
- ^:匹配正则表达式的开始行。
- $: 匹配正则表达式的结束行。
- \<:从匹配正则表达 式的行开始。
- >:到匹配正则表达式的行结束。
- [ ]:单个字符,如[A]即A符合要求 。
- [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
- .:所有的单个字符。
- *:有字符,长度可以为0。
例如:
grep -n ‘[^h]hehe’ filename //在filname里面查找hehe为后缀的内容
grep -n [0-9] filename //在filename里面查找含有数字的内容
grep -n ‘^the’ filename //在filename里面查找the开头的内容
grep -n ‘$.’ filename //在filename里面查找.结尾的内容
find和grep结合使用
要是find指令和grep指令结合使用,需要使用感到命令,管道命令可以将前面的指令的输出内容作为后面的指令的输入,如果使用定的指令将文件的路径找到,然后使用grep命令在指定的文件里面查找相应的木白哦内容。
例如:
使用命令将指定文件的里面的指定内容输出:
find . -name "heap.h" | xargs grep -n 'heap'
注:这里的xargs是替换工具,可以将标准输入转换成命令行参数。