shell – 为什么wc实用程序会生成多行“total”?
发布时间:2020-12-15 21:56:11 所属栏目:安全 来源:网络整理
导读:我在从Cygwin运行的 shell脚本中使用wc实用程序,我注意到输出中有多行“total”. 以下函数用于计算源文件中的行数: count_curdir_src() { find . '(' -name '*.vb' -o -name '*.cs' ')' -a '!' -iname '*.Designer.*' -a '!' -iname '.svn' -print0 | x
我在从Cygwin运行的
shell脚本中使用wc实用程序,我注意到输出中有多行“total”.
以下函数用于计算源文件中的行数: count_curdir_src() { find . '(' -name '*.vb' -o -name '*.cs' ')' -a '!' -iname '*.Designer.*' -a '!' -iname '.svn' -print0 | xargs -0 wc -l } 但它对某个目录的输出如下所示: $find . '(' -name '*.vb' -o -name '*.cs' ')' -a '!' -iname '*.Designer.*' -a '!' -iname '.svn' -print0 | xargs -0 wc -l 19 ./dirA/fileABC.cs 640 ./dirA/subdir1/fileDEF.cs 507 ./dirA/subdir1/fileGHI.cs 2596 ./dirA/subdir1/fileJKL.cs (...many others...) 58 ./dirB/fileMNO.cs 36 ./dirB/subdir1/filePQR.cs 122200 total 6022 ./dirB/subdir2/subsubdir/fileSTU.cs 24 ./dirC/fileVWX.cs (...) 36 ./dirZ/Properties/AssemblyInfo.cs 88 ./dirZ/fileYZ.cs 25236 total 看起来wc会在过程中的某个位置重置.它不能由文件名或目录名中的空格字符引起,因为我使用-print0选项.它只发生在我最大的源树上运行时. 那么,这是wc或Cygwin中的错误吗?或者是其他东西? wc联机帮助页说:
它没有提到任何关于多个总线数(中间总计数或其他东西),所以谁应该责怪这里? 解决方法
你多次调用wc – 对于xargs提供的每个“批量”输入参数一次.你每批获得一个.
另一种方法是使用临时文件和wc的–files0-from选项: $find . '(' -name '*.vb' -o -name '*.cs' ')' -a '!' -iname '*.Designer.*' -a '!' -iname '.svn' -print0 > files $wc --files0-from files (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |