文章目录
命令 find 和命令 grep 联合使用
[root@htlwk0001host test]# find . -name "*.txt" -exec grep "world" {} \; -print
hello shell world sddsfsdfds
fddfds worldworl world
worldeeworld
world
./text.txt
worlddsfdsfds34324
./test1/text4.txt
dsfdsaljflvoworlddslfljds324432
gkldfjgleoeworldsdlfjdlsworld
./text1.txt
命令含义:
在当前目录及其所有子目录下查找纯文本文件,并将文件中匹配到关键词“world”的文本行输出,也同时输出对应的文件名。
详细说明:
命令项 | 说明 |
---|---|
-print |
这个是命令 find 的选项,表示打印输出命令行参数 |
\; |
表示拼接命令行。在本例中拼接效果是 grep "world" ./text.txt ; grep "world" ./test1/text4.txt ; ... ,因为分号 ; 是特殊字符,表示命令行的结尾或命令的组合,如果不加转义符 \ ,shell 引擎就认为分号 ; 后面也是一条命令行,因此会去解释执行,结果却不是,所以会报错 |
{} |
默认的参数变量,它会接收命令 find 传递过来的值,从而作为后面命令(即 grep 命令)的参数,本例中就是命令 find 查找到文件名 |
-exec |
这个是命令 find 的选项,后面跟着命令行,表示执行指定的命令行 |
\;
的命令执行效果也可以理解成以下形式:
grep "world" ./text.txt