2

ls 只是打印出目录中的文件, wc -l 计算特定文件名的第 num 行,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
4

2 回答 2

5

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

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

wc -l a b

我会得到

 28 a
 17 b
 45 total

同样,如果模仿lswith (echo a; echo b;)added with的输出,xargs我们将得到相同的输出:

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

输出:

 28 a
 17 b
 45 total

如果我们添加回声:

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

输出:

wc -l a b
于 2013-09-23T03:54:52.423 回答
0

试试这条线,看看它是否给了你想要的东西:

grep -c '.*' *.*
于 2013-09-23T09:02:52.150 回答