私のフォルダには119766個のファイルがあります。 CSVファイルです。すべてのファイルの総行数を見つけたいと思います。
次のコマンドを実行しようとしています。
cat * |wc -l
ただし、次のエラーが発生します。
-bash: /bin/cat: パラメーターのリストが長すぎます。
どうすればいいですか?この問題を解決する方法はありますか?
1つ追加したいのは、行全体の数が非常に大きくなることです。
ベストアンサー1
さて、この質問に新しい根拠を提供するには、cat
次のようにする必要があります。
find . -type f -exec cat {} + | wc -l
許可されているファイル名の最大数を使用してa()を続行し、cat
すべてを 。+
wc
-maxdepth 1
代わりに、--files0-from
GNUオプションを使用できます。wc
find . -type f -print0 | wc -l --files0-from=- | tail -1
このオプションを使用すると、wc
内容を読むのではなくファイル名標準入力ではヌル文字で区切られます。を使用すると、-print0
これらのfind
ファイル名はヌルバイトで区切られて印刷されます。各ファイルの行数は印刷され続けるため、最後wc
の要約行を除くすべての行をスキップすることをお勧めしますtail
。
どちらのソリューションもすべてのロケールで動作するという利点がありますが、@casのソリューションは調整する必要があります(たとえば、「total」はドイツ語で「insgesamt」です)。