当我在shell提示符下键入:
grep -r "ambiguously" .
我得到的错误:
grep的:行太长。
基本上,当前目录是一个日志目录,我试图找到在所有的日志文件中的SQL错误“含糊不清的列”。
可是为什么我的错误? 这些文件的大小非常巨大的,是主要的原因是什么?
当我在shell提示符下键入:
grep -r "ambiguously" .
我得到的错误:
grep的:行太长。
基本上,当前目录是一个日志目录,我试图找到在所有的日志文件中的SQL错误“含糊不清的列”。
可是为什么我的错误? 这些文件的大小非常巨大的,是主要的原因是什么?
你应该试试
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/走得更远。
“grep的:行太长”并不一定意味着该文件或文件,其中的行是“太长”包含你正在寻找的字符串。
你可能也想尝试:
因为我在find /var/log -type f
; 不要回声$我&& grep的模式$ I; 做|三通/tmp/output.txt
要么
因为我在find /var/log -type f
; 不要回声$我&& grep的模式$ I; DONE
这取决于你有多少搜索文件通过。
该“行太长”将会出现在标准错误,你会看到它在屏幕上,如果你可以滚动回来。 这可能是“lastlog的”。
你的错误,因为grep的是在文件中可以通过命令行获得的数量限制。
尝试
ls -b . | xargs grep "ambiguously"
编辑:这个解决方案是唯一有效的,如果你不需要它是递归