1.grep

过滤:在文件中或管道中进行查找,找出想要的内容(字符串)默认按照行查找.
grep会把匹配到的行显示出来

1.1概述

grep选项说明
-nline-number 显示行号
-v排除,取反
-iignore-case 过滤的时候忽略大小写

1.2基本用法

在/etc/passwd中过滤出包含root的行
grep '你要找的内容' /etc/passwd 
grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

grep 也可以对接管道
过滤出叫crond的进程
ps -ef |grep 'crond'

2.find

四剑客四号选择,擅长查找文件。在指定的目录中查找你要的文
件,文件名。
find命令选项说明
-type什么类型的文件 f表示文件 d表示目录
-name文件名
-size根据大小查找文件 +表示大于 -表示小于+10k(小写K) +10M(大写) G
-mtime根据修改时间查找文件

2.1基础用法

find 目录 指定类型 指定名字

#案例01 在/etc/目录中找出文件名叫hostname文件
精确查找,指定文件名。
find /etc/   -type f  -name 'hostname'
/etc/hostname
#案例02 找出/etc/下面以.conf结尾的文件
a.conf b.conf c.conf lidao.conf xxxx.conf 
find /etc/ -type f -name '*.conf'


#进阶案例06 查找文件的时候指定最多找多少层目录.
find / -maxdepth 2  -type f -name "*.conf"
-maxdepth 1 选项位置第1个,指定find命令查找的最大深度
(层数),不加上就是所有层。
#案例07 查找的时候不区分文件名的大小写
find /   -type f -iname "*.conf"
#ignore case

2.2特别注意

我们发现find命令使用管道把数据传输给其他命令失败了!!!
find /oldboy/find/ -type f -name "*.txt" | ls -l
无法使用。
关于管道的秘密: 
find /oldboy/find/ -type f -name '*.txt' | ls 
-lh
ls 选项 参数
错误的心路历程:
默认管道是无法把数据变化为命令的参数,导致传递失败,find
命令找出的内容相当于被丢弃了,就相当于执行ls -lh命令,显示当
前目录下内容并详细信息。
故障原因:
前面的命令通过管道传递给后面命令,传递的是 字符串 .
这个命令(ls)中传递文字符号就不行,传递 参数 .
所以上面的命令相当于find白白浪费了,仅仅执行了下ls -lh而已 .
如何解决:
通过|xargs把前面命令传递过来的字符串转换为后面命令可以识别参数.


效果展示:
find /oldboy/find/  -type f  -name '*.txt' |xargs ls -lh