find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的解决方案?仅在文本文件中递归查找TEXTSEARCH
kev*_*kev 203
您可以在以下位置使用-r(递归)和-I(忽略二进制)选项grep:
$ grep -rI "TEXTSEARCH" .
Run Code Online (Sandbox Code Playgroud)
-I处理二进制文件,就好像它不包含匹配数据一样; 这相当于--binary-files=without-match选项.-r递归地读取每个目录下的所有文件; 这相当于-d recurse选项.
另一个不如kevs优雅的解决方案是,将find -exec命令链接在一起查找,而不需要xargs和cut:
find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";"
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您知道要搜索的文件扩展名是什么,那么可以通过一种非常简单的方法从当前目录中搜索所有 *.txt 文件,递归遍历所有子目录,不区分大小写:
grep -ri --include=*.txt "sometext" *
| 归档时间: |
|
| 查看次数: |
34549 次 |
| 最近记录: |