我试图找到一种方法来扫描我的整个Linux系统,以查找包含特定文本字符串的所有文件。只是为了澄清,我正在文件中寻找文本,而不是在文件名中寻找文本。
当我查找如何执行此操作时,我两次遇到此解决方案:
find / -type f -exec grep -H 'text-to-find-here' {} \;
但是,它不起作用。似乎显示了系统中的每个文件。
这接近正确的方法吗?如果没有,我应该怎么办?这种在文件中查找文本字符串的功能对于我正在执行的某些编程项目非常有用。
-H
为-l
(也许grep
用fgrep
)即可。要排除具有某些名称模式的文件,可以使用find
更高级的方式。不过,值得学习使用find
。只是man find
。
find … -exec <cmd> +
比find … -exec <cmd> \;
。更容易输入且速度更快。它仅在<cmd>
接受任意数量的文件名参数时才有效。如果<cmd>
启动缓慢(如Python或Ruby脚本),则执行时间的节省特别大。
grep "pattern" path/*.txt
.
为单字符通配符。我的建议是始终使用fgrep或egrep。