find 查找文件grep匹配数据
一、find介绍
1. find . -iname "*.txt"查找当前目录下各个文件夹下的txt属性的文件(i忽略大小写)。
2.find . -type f 查找当前目录下各个文件夹下的文件
3.find . -type d 查找当前目录下各个文件夹下的目录
4.find . -type f | xargs grep -ain -E "匹配字段" --colo=auto
grep参数介绍-a
选项:以文本文件的形式处理二进制文件,-i
选项:让搜索忽略大小写,-n
选项:在输出结果时,显示匹配行的行号,-E正则匹配,--colo=auto匹配结果自带颜色。
5.find -L ./ -path ./qt-creator-opensource-src-12.0.0/bin -prune -o -path ./qt-creator-opensource-src-12.0.0/coin -prune -o -type f| xargs grep -ain -E "chen3feng" --color=auto
执行命令所在目录有目录qt-creator-opensource-src-12.0.0。
-path ./qt-creator-opensource-src-12.0.0/bin -prune
path
选项用于匹配文件路径,./qt-creator-opensource-src-12.0.0/bin -prune 就是要匹配的路径模式。这意味着只要遇到路径是 ./qt-creator-opensource-src-12.0.0/bin -prune 的目录,find
就会停止对它及其子目录的搜索。-prune
选项是告诉find
命令,对匹配-path
条件的目录不要进行遍历,也就是 “修剪” 掉这部分目录树,避免在指定目录及其子目录中继续查找,以此提高查找效率。在这个例子里,./qt-creator-opensource-src-12.0.0/bin -prune 目录及其内部的所有文件和子目录都会被跳过
-o
:这是一个逻辑运算符,代表 “或(or)” 的关系,连接前后两个查找条件
-path ./qt-creator-opensource-src-12.0.0/coin -prune
同之前的命令一样含义。
-type f
:-type
用于指定查找文件的类型,f
表示普通文件(file),也就是查找除了被 -prune
修剪掉的./qt-creator-opensource-src-12.0.0/bin 和 ./qt-creator-opensource-src-12.0.0/coin目录及其子目录之外的所有普通文件。
整体目录结构如下图:
6.find . -type f \( -name "*json" -o -iname "*lists.txt" \) | xargs grep -ain "匹配项"
find
命令用于在当前目录(.
)及其子目录下查找特定类型的文件并进行grep匹配。
- 括号:括号
\(`和`\)
用于将多个条件组合在一起,让它们作为一个整体来处理,形成更复杂的逻辑判断。因为括号在 shell 中有特殊意义,所以需要用反斜杠\
转义,使其被当作普通字符传递给find
命令。 -name "*json"
:-name
选项用于按文件名精确匹配,*
是通配符,代表任意字符序列,所以*json
会匹配所有以.json
为后缀的文件名。-o
:这是逻辑运算符 “或(or)”,连接前后两个文件名匹配条件。-iname "*lists.txt"
:-iname
选项与-name
类似,也是匹配文件名,但-iname
是忽略大小写的,所以它会匹配所有名字是*lists.txt
的文件,无论大小写如何