Linux查找指定目录下,包含特定字符串的文件
使用Linux经常遇到,只知道文件包含特定字符串,但是不知道具体的文件名,(比如筛选日志文件),需要根据特定的字符串反向查找文件查找当前目录下,包含Hello字符串的所有文件
方式1:利用grep进行查找过滤,结果高亮显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28grep -rn "Hello" ./
#根据文件类型筛选
grep -R --include="*.log" "Hello" ./
#参数解释
-i 不区分大小写
-l 只列出匹配的文件名
-L 列出不匹配的文件名
-w 只匹配整个单词,而不是字符串的一部分(如匹配"Hello",而不匹配"Hello111")
-C num 匹配的上下文分别显示num行
-c 指输出匹配行的计数
-r 递归搜索子目录
-d skip 忽略搜索子目录,使用时目录下需加*,如grep -d skip "Hello" ./*
-n 显示关键字位于查找文件的哪一行
-v 显示不包含匹配文本的所有行
-h 查询多文件时,不显示文件名
#匹配规则
/< 和 >/分别标注单词的开始和结尾
^ 和 $ 分别表示正则的开始行
pattern1 | pattern2 匹配:pattern1 或者 pattern2
pattern1 ./ grep pattern2 显示既匹配pattern1 又匹配pattern2的行
如果有很多输出,可以通过管道将其输出到less上阅读
#目录查询
ls -l | grep "^d" 查询当前目录下的目录
ls -l | grep "^d…..x..x" 查询具有可执行权限的目录集合方式2:利用find加管道进行过滤
1
2
3find ./ | xargs grep "Hello" 或者 find ./ -exec grep "Hello" {} \;
匹配文件类型 -type f -name "*.log"
Linux查找包含指定字符串的文件
-------------本文结束感谢您的阅读-------------
分享不易,请我喝杯咖啡吧~~~