wc -l
ファイルのみ(行数)実行すると、以下が提供されます。
λ wc -l pacman_Qemq.txt
235 pacman_Qemq.txt
ただし、ランニングは以下ls | xargs wc -l
を提供します。
λ ls | xargs wc -l
242409 pacman_database.tar.bz2
235 pacman_Qemq.txt
235 pacman_Qem.txt
807 pacman_Qeq.txt
807 pacman_Qe.txt
376 pacman_Qmq.txt
2276 pacman_Qnq.txt
2276 pacman_Qn.txt
2652 pacman_Qq.txt
2652 pacman_Qsq.txt
2652 pacman_Q.txt
257377 total
どうやって?なぜこれがtotal
起こるのですか?アイテムを並べ替える必要があるのはなぜですか?各ファイルに対して個別に実行しないでくださいxargs
。wc -l
興味深いことに、wc -l *
同じ結果が生成されます。
ベストアンサー1
デフォルトでは、できるだけ多くの引数が単一xargs
のコマンドラインに渡されます。通常、最大(IIRC)シェル制限は256文字です。したがって、使用するコマンドはls | xargs wc -l
機能的に同じですwc -l *
。あなたが望む動作は、各ファイルに対して一度だけxargs
実行されると思います。これはオプションをwc
追加することで達成できます。-n
ls | xargs -n 1 wc -l