ls 命令只是打印出目录中的文件,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
wc
将传递给它的所有文件的总行数相加。xargs
从输入中收集行,并将它们一次性作为多个参数的一个集合传递给wc
,因此您可以得到所有这些文件的总和。
例如,如果我有文件a
和b
,并运行:
wc -l a b
我会得到
28 a
17 b
45 total
(echo a; echo b;)
模拟ls
的输出,并加上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 '.*' *.*
xargs
还会在文件名参数列表超过ARG_MAX
时对其进行拆分,这种情况下您将获得多个wc
调用以及多个(子)total
行。 - tripleeewc -l
гҖӮеҪ“еҸӘжҸҗдҫӣдёҖдёӘеҸӮж•°ж—¶пјҢwc -l
жІЎжңүжҳҫзӨәжҖ»иЎҢж•°гҖӮ - spin6lock