1

シェルプロンプトでこれを入力すると:

grep -r  "ambiguously" .

エラーが発生します:

grep: 行が長すぎます。

基本的に、現在のディレクトリはログ ディレクトリであり、すべてのログ ファイルで '列が曖昧に定義されています' という SQL エラーを見つけようとしています。

しかし、なぜエラーが発生するのですか? ファイルのサイズが非常に大きいのですが、それが主な理由ですか?

4

3 に答える 3

2

試してみてください

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/を参照してください。

于 2012-10-01T21:06:36.797 に答える
2

「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 ; 終わり

検索するファイルの数によって異なります。

「行が長すぎます」は標準エラーに表示され、スクロールバックできる場合は画面に表示されます。「ラストログ」かもしれません。

于 2014-10-22T16:43:45.193 に答える
0

grep はコマンドラインで取得できるファイルの数が制限されているため、エラーが発生します。

試す

ls -b . | xargs grep "ambiguously"

編集:このソリューションは、再帰的である必要がない場合にのみ有効です

于 2012-10-01T21:00:52.597 に答える