grep只有文本文件

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

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

您可以在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 {} ";"