我试图运行以下命令,但获取参数太长的错误。你能帮我吗?。错误:“grep:参数列表太长”
HOST# grep -rl 'pattern' /home/*/public_html/*
-bash: /bin/grep: Argument list too long
有没有办法覆盖这个错误,并grep模式匹配文件,我想在所有用户public_html目录。同一台服务器中有大约500多个用户。
我试图运行以下命令,但获取参数太长的错误。你能帮我吗?。错误:“grep:参数列表太长”
HOST# grep -rl 'pattern' /home/*/public_html/*
-bash: /bin/grep: Argument list too long
有没有办法覆盖这个错误,并grep模式匹配文件,我想在所有用户public_html目录。同一台服务器中有大约500多个用户。
使用find
find /home/*/public_html -type f -exec grep -l 'pattern' {} +
的+
修饰使得组管理的块的文件名。
但是,您可以使用grep -r
。这个参数应该是目录名称,而不是文件名。
grep -rl 'pattern' /home/*/public_html
这将只有500多个参数,而不是数千个文件名。
没错。当GNU的人给它一个递归查找文件的参数时,他们真的搞砸了grep。为什么不给它一个选项来排序输出呢?用于** find **文件的UNIX命令被命名为'find',并命令** g **在文件中搜索文件中的** r ** eg ** ** e ** xpression和** p ** rint结果被命名为'grep'。如上所示,始终只使用正确的工具进行工作。 –
我明白你来自@EdMorton,但它就像编程语言中的语法糖。有时候这不是最佳的方式,但是我倾向于欣赏一种工具何时能够让他们更快更轻松地完成工作。 –
@EdMorton我想你会发现很多GNU工具都有便利选项来替代常见的组合。这就像'tar'的-z选项,因为输入/输出到'gzip'很常见。或者像'zless'这样的结合'less'和'zcat'的工具,以及添加到'less'的选项以使其工作。 – Barmar
使用[xargs](http://linux.die.net/man/1/xargs)将其分解为可管理的块。 –
@PaulR你可以精心设计而不是提示吗?这真的很有帮助。 – John
以前评论中的链接将带您进入'xargs'手册页。请注意,您的问题是Stack Overflow的主题,因为它不是一个编程问题 - 请尝试http://superuser.com或http://unix.stackexchange.com。 –