我正在使用以下命令对所有 .pl 文件中的字符串“/local”进行 grep,任何人都可以指出这里有什么问题吗?
find . *.pl| xargs grep '/local' -sl
传递-name
参数,并引用*.pl
:
find . -name "*.pl" | xargs grep '/local' -sl
为什么每个人都建议“找到”?shell 可以为你计算出你的“.pl”文件:
grep "/local" *.pl
你可以很容易
find . -type f -name '*.pl' -exec grep '/local/' {} \;
或者如果您的find支持它,则可以使用更优化的形式,这一次将多个文件传递给 grep
find . -type f -name '*.pl' -exec grep '/local/' {} +
-exec 往往很慢。
我偏爱:
find . -name "*.pl" -print0 | xargs -0 grep -sl '/local'
...因为它不会被带有换行符的文件名混淆。
但是请注意,某些版本的 GNU grep 似乎存在由 grep 命令触发的内存泄漏,该命令具有非常长的要搜索的文件名列表。在这种情况下,-exec 更可靠。