( find -print0 | xargs -0 cat ) | wc -l
(fromhttp://stackoverflow.com/questions/1358540/how-to-count-all-the-lines-of-code-in-a-directory-recursively)打印总数所有子目录中所有文件中的行。但它也打印了一堆像cat: ./x: Is a directory
这样的行。
我尝试了( find -print0 | xargs -0 cat ) | wc -l &> /dev/null
(以及2> /dev/null
和> /dev/null 2>&1
)但邮件仍然打印在shell中。
是否无法隐藏此输出?
( find -type f -print0 | xargs -0 cat ) | wc -l
克服了这个问题,但我仍然很好奇为什么重定向stderr不起作用,以及是否有更通用的方法来隐藏cat
的错误。< / p>
答案 0 :(得分:2)
您需要将cat
命令的stderr流重定向到/dev/null
。您所做的是重定向wc
的stderr流。试试这个:
( find -print0 | xargs -0 cat 2>/dev/null ) | wc -l
答案 1 :(得分:0)
如果您希望find
仅查找“常规”文件,则必须使用find -type f …
。
顺便说一句,如果你想计算代码行,你应该看一下ohcount
。