grep只有文本文件

find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {} 

这是一个很好的解决scheme? 用于仅在文本文件中recursion地查找TEXTSEARCH

2 Solutions collect form web for “grep只有文本文件”

您可以在grep使用-r (recursion)和-I (忽略二进制)选项:

 $ grep -rI "TEXTSEARCH" . 
  • -I处理一个二进制文件,就好像它不包含匹配的数据; 这相当于--binary-files=without-match选项。
  • -rrecursion读取每个目录下的所有文件; 这相当于-d recurse选项。

另一个比kevs更不优雅的解决scheme,就是在一起查找链式执行命令,而不使用xargs和cut:

 find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";" 
  • 如何使用'find'命令显示修改的date时间?
  • 如何将多行输出连接到一行?
  • ack未命中结果(vs grep)
  • Windowsrecursiongrep命令行
  • grepping二进制文件和UTF16
  • 如何在Linux上用grepsearch包含dos命令行结尾的文件(CRLF)?
  • 如何在文件中search多行模式?
  • 相当于grep -f的PowerShell
  • 通过文件扩展名的git grep
  • 使用grep计算大量文件中的所有string
  • 如何grep的美元符号($)?