经过几次谷歌搜索后,我得出的结论是:
find my_folder -type f -exec grep -l "needle text" {} \; -exec file {} \; | grep text
这非常不方便,并且会输出不需要的文本,例如 mime 类型信息。还有更好的解决方案吗?我在同一文件夹中有很多图像和其他二进制文件,还有很多我需要搜索的文本文件。
我知道这是一个旧线程,但我偶然发现了它,并认为我应该分享我的方法,我发现这是一种非常快速的使用方法find
仅查找非二进制文件:
find . -type f -exec grep -Iq . {} \; -print
The -I
grep 的选项告诉它立即忽略二进制文件和.
选项以及-q
将使它立即匹配文本文件,因此速度非常快。您可以更改-print
to a -print0
用于管道进入xargs -0
或者如果您担心空间的话(感谢您的提示,@lucas.werkmeister!)
此外,第一个点仅对于某些 BSD 版本是必需的find
例如在 OS X 上,但如果你想把它放在别名或其他东西中,那么只要一直保留它就没有什么坏处。
EDIT:正如 @ruslan 正确指出的那样,-and
可以省略,因为它是隐含的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)