哪个命令在命令ls中添加总数| xargs wc -l?

时间:2013-09-23 03:52:31

标签: shell xargs

只打印出目录中的文件,wc -l计算特定文件名的行号,xargs将ls输出逐个发送到wc -l,但最终结果是总计,为什么?

示例输出:

  14 doc.txt
 230 legion.c
 519 legion_agent.c
  70 legion_manager.c
  52 legion_privilege.c
 236 logic_agent.c
 349 protocol.c
1470 total

2 个答案:

答案 0 :(得分:4)

wc将传递给的所有文件的总行数作为参数组合在一起。 xargs从输入中收集行,并将它们作为一组多个参数一次性放入wc,以便获得所有这些文件的总和。

例如,如果我有文件ab,我会运行:

wc -l a b

我会得到

 28 a
 17 b
 45 total

同样,如果模仿ls的输出(echo a; echo b;)添加了xargs,我们会得到相同的输出:

(echo a; echo b;) | xargs wc -l

输出:

 28 a
 17 b
 45 total

如果我们添加echo:

(echo a; echo b;) | xargs echo wc -l

输出:

wc -l a b

答案 1 :(得分:0)

尝试这一行,看看它是否能满足您的需求:

grep -c '.*' *.*