尝试grep日志文件时出现太长的错误

时间:2012-10-01 20:57:58

标签: file unix grep

当我在shell提示符下输入:

grep -r  "ambiguously" .

我收到错误:

  

grep:行太长了。

基本上当前目录是一个日志目录,我试图在所有日志文件中找到sql错误“Column ambiguously defined”。

但为什么我会收到错误?文件的大小非常庞大,这是主要原因吗?

3 个答案:

答案 0 :(得分:2)

" grep:行太长" 并不一定意味着该行所在的文件或文件过长而且#34;包含您正在寻找的字符串。

您可能想尝试:

for find /var/log -type f;回声$ i&& grep PATTERN $ i;完成| tee /tmp/output.txt

for find /var/log -type f;回声$ i&& grep PATTERN $ i;完成了

取决于您搜索的文件数量。

"行太长"将出现在标准错误中,如果您可以向后滚动,您将在屏幕上看到它。它可能是" lastlog"。

答案 1 :(得分:1)

你应该试试

find -type f -exec grep PATTERN {} +

命令行限制可以在linux上找到

$ getconf ARG_MAX

使用

打开* BSD
$ sysctl kern.argmax

请参阅http://www.cyberciti.biz/faq/argument-list-too-long-error-solution/以便更进一步。

答案 2 :(得分:0)

您收到错误,因为grep受命令行可以获取的文件数量有限。

尝试

ls -b . | xargs grep "ambiguously"

编辑: 此解决方案仅在您不需要递归时才有效