ls *.txt | wc -l
多くのファイルを含むディレクトリにアクセスしようとすると、次のエラーが発生します。
-bash: /bin/ls: Argument list too long
この「パラメータリスト」のしきい値は、システムの展開または仕様によって異なりますか?通常、このような大きな結果を他のコマンド(例:)にパイプするため、wc -l
端末の制限は気にしません。
ベストアンサー1
エラーメッセージパラメータリストが長すぎます。~から*のls *.txt
。
この制限はバイナリとカーネルの両方に安全です。バラよりARG_MAX、新しいプロセスの最大パラメータ長これに関する詳細情報と使用方法と計算方法。
パイプサイズにはそのような制限はありません。したがって、単に次のコマンドを実行できます。
find -type f -name '*.txt' | wc -l
ls
注:最新のLinuxでは、ファイル名の奇妙な文字(改行文字など)が同じツールを使用してエスケープされますが、find
まだ表示されます。*。以前のUnixを使用している場合は、このコマンドが必要です。
find -type f -name '*.txt' -exec echo \; | wc -l
NB2:名前に改行文字を含むファイルを作成する方法を知りたいです。コツを知ったら難しくありません。
touch "hello
world"