/bin/cat: パラメーターのリストが長すぎます。

/bin/cat: パラメーターのリストが長すぎます。

私のフォルダには119766個のファイルがあります。 CSVファイルです。すべてのファイルの総行数を見つけたいと思います。

次のコマンドを実行しようとしています。

cat * |wc -l

ただし、次のエラーが発生します。

-bash: /bin/cat: パラメーターのリストが長すぎます。

どうすればいいですか?この問題を解決する方法はありますか?

1つ追加したいのは、行全体の数が非常に大きくなることです。

ベストアンサー1

さて、この質問に新しい根拠を提供するには、cat次のようにする必要があります。

find . -type f -exec cat {} + | wc -l

許可されているファイル名の最大数を使用してa()を続行し、catすべてを 。+wc-maxdepth 1

代わりに、--files0-fromGNUオプションを使用できます。wc

find . -type f -print0 | wc -l --files0-from=- | tail -1

このオプションを使用すると、wc内容を読むのではなくファイル名標準入力ではヌル文字で区切られます。を使用すると、-print0これらのfindファイル名はヌルバイトで区切られて印刷されます。各ファイルの行数は印刷され続けるため、最後wcの要約行を除くすべての行をスキップすることをお勧めしますtail

どちらのソリューションもすべてのロケールで動作するという利点がありますが、@casのソリューションは調整する必要があります(たとえば、「total」はドイツ語で「insgesamt」です)。

おすすめ記事