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
选项。-r
recursion读取每个目录下的所有文件; 这相当于-d recurse
选项。
另一个比kevs更不优雅的解决scheme,就是在一起查找链式执行命令,而不使用xargs和cut:
find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";"