我该如何避免“grep:参数列表太长”错误?

我该如何避免“grep:参数列表太长”错误?

我使用的是 Mac 10.7.5 和 bash shell。我尝试在一组文件中查找字符串的实例,但一直出现此错误

Daves-MacBook-Pro:folder davea$ find . -name "*" | xargs grep 'state-icons'
xargs: grep: Argument list too long

我如何运行该命令(或类似的命令)来避免此错误?

答案1

您可以使用-n选项来xargs限制参数的数量。

find . -name "*" | xargs -n 20 grep 'state-icons'

但更好的解决方案是使用-type f而不-name "*"是以将列表限制为普通文件,避免每个文件夹都出现错误消息。

请注意,它不适用于名称中带有空格的文件。

答案2

如果你想搜索文件名

for x in ./**/*.*; do echo "$x" | grep 'state-icons' ; done

如果你想搜索文件内容

for x in ./**/*.*; do grep 'state-icons' "$x" ; done

相关内容