我使用的是 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