シェルプロンプトでこれを入力すると:
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:line too long」は、その行が「too long」であるファイルに、探している文字列が含まれているとは限りません。
あなたは試してみたいかもしれません:
私のためにfind /var/log -type f
; do echo $i && grep PATTERN $i ; 完了 |tmp/output.txt
また
私のためにfind /var/log -type f
; do echo $i && grep PATTERN $i ; 終わり
検索するファイルの数によって異なります。
「行が長すぎます」は標準エラーに表示され、スクロールバックできる場合は画面に表示されます。「ラストログ」かもしれません。
grep はコマンドラインで取得できるファイルの数が制限されているため、エラーが発生します。
試す
ls -b . | xargs grep "ambiguously"
編集:このソリューションは、再帰的である必要がない場合にのみ有効です