Shell 如何计算多个文件中的行数并将其重定向到一个文件?

Shell 如何计算多个文件中的行数并将其重定向到一个文件?,shell,unix,Shell,Unix,如何计算多个项目中具有多个扩展名的文件行数,并将这些信息放入一个文件中?对于bash,您可以简单地: find Project1 Project2 -type f \( -iname \*.cpp -o -iname \*.h \) -print0 | xargs -0 wc -l > LineCounter.txt 2>&1 shopt -s extglob #best in your ~/.profile wc -l {Project,OtherProjec

如何计算多个项目中具有多个扩展名的文件行数,并将这些信息放入一个文件中?

对于
bash
,您可以简单地:

find Project1 Project2 -type f \( -iname \*.cpp -o -iname \*.h \) -print0 | xargs -0 wc -l > LineCounter.txt 2>&1
shopt -s extglob       #best in your ~/.profile
wc -l {Project,OtherProject}/**/*.{cpp,h} > LineCounter.txt
**
将递归展开。限制:对于大型树,可能会以“Arg count too long”错误消息结束

或不区分大小写

shopt -s extglob nocaseglob
wc -l {Project,OtherProject}/**/*.{cpp,h} > LineCounter.txt
此外,有时还缺少文件最后一行的
\n
。在这种情况下,
wc
报告的行数减少1行。您可以使用
grep
进行计数(比
wc
慢一点),如:

计算行数

grep -c '.' files...
计算非空行数,其中至少包含一个字符(也包含空格)


统计真正非空的行,例如仅包含一些非空格字符的行,等等…

是否确实要用错误消息(例如:
2>&1)将输出文件弄乱+1.:)
grep -c '.' files...
grep -c '[^ ]' files...