只打印出目录中的文件,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
答案 0 :(得分:4)
wc
将传递给的所有文件的总行数作为参数组合在一起。 xargs
从输入中收集行,并将它们作为一组多个参数一次性放入wc
,以便获得所有这些文件的总和。
例如,如果我有文件a
和b
,我会运行:
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 '.*' *.*