我已经在使用bash脚本。它只计算* .cpp中的行数。如何在没有pugixml.cpp的情况下在* .h文件中计算行数?仅在类型为* .cpp和* .h的文件中计数行
find . -type f -name \*.cpp -and ! -name \pugixml.cpp -exec cat '{}' + | wc -l
我已经在使用bash脚本。它只计算* .cpp中的行数。如何在没有pugixml.cpp的情况下在* .h文件中计算行数?仅在类型为* .cpp和* .h的文件中计数行
find . -type f -name \*.cpp -and ! -name \pugixml.cpp -exec cat '{}' + | wc -l
使用-o
查找名称为*.cpp
或*.h
文件,并添加括号中的优先级。请注意,我删除了-and
和\pugixml
中的反斜杠,因为它们是不必要的(尽管无害)。你
find . -type f \(-name \*.cpp -o -name \*.h \) ! -name pugixml.cpp -exec cat {} + | wc -l
还能减少find -exec cat {} + | wc -l
简单find -exec wc -l {} +
。这将显示每个文件的统计数据以及总数。
find . -type f \(-name \*.cpp -o -name \*.h \) ! -name pugixml.cpp -exec wc -l {} +
没有找到'-exec'命令,你的意思是: 'kexec-tools'命令'kexec'(主) 'gexec'命令'gexec'(宇宙) 命令'jexec'来自'openjdk' -6-jre-headless'(main) -exec:找不到命令 – 2011-04-26 19:20:56
大多数find版本都支持“-exec”命令。显然,你的不。我知道的唯一版本不在Solaris上,在这种情况下,您可以使用gfind。 – 2011-04-26 19:27:43
通过删除找到的每个文件的单个进程来更快速地执行命令:find。 -type f \(-name \ *。cpp -o -name \ *。h \)! -name pugixml.cpp | xargs wc -l – 2011-04-27 13:25:17
听起来像你真的想要sloccount。
Grep it!
你知道,如果你想只计算是* .h文件,你会自动排除pugixml.cpp
sloccount --duplicates --wide --details . | grep -e "\.h$"
如果你真的需要明确排除pugi:
sloccount --duplicates --wide --details . | grep -e "\.h$" | grep -v -e 'pugixml.cpp'
你能澄清?你的意思是所有.h文件,还是每个现有的.cpp文件对应的.h文件? – 2011-04-26 19:18:00