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
wc
将传递给 is 的所有文件的总行合并为参数。xargs
从输入中收集行并将它们作为一组多个参数一次全部放入,wc
以便您获得所有这些文件的总数。
例如,如果我有文件a
和b
,并且我运行:
wc -l a b
我会得到
28 a
17 b
45 total
同样,如果模仿ls
with (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
试试这条线,看看它是否给了你想要的东西:
grep -c '.*' *.*