我正在为我的研究编写一个脚本,我想获得源文件中的总行数。我来到cloc,我想我将在我的剧本中使用它。
然而,cloc给出了太多信息的结果(不幸的是,因为我是新成员,我无法上传照片)。它给出了文件数,行数,空行数,注释行数和其他图形表示内容。
我只对在计算中使用它的行数感兴趣。有没有办法轻松获得这个数字(可能是通过在命令行中执行一些选项(虽然我通过了可用的选项,并没有找到对我的情况有用的东西))?
我想在结果上做正则表达式来得到数字;然而,这是我第一次使用cloc,可能有更好/更专业的方式。
有什么想法吗?
此致 ARWA
答案 0 :(得分:0)
我不确定CLOC。但值得使用默认的shell命令。
请看this question。
单独获取代码行数
find . -name '*.*' | xargs wc -l
获取目录中的代码行总数。
(find ./ -name '*.*' -print0 | xargs -0 cat) | wc -l
请注意,如果您需要具有特定扩展名的文件中的行数,则可以使用*.ext
。
*.rb
,如果是红宝石。
答案 1 :(得分:0)
对于非常快速和简单的事情你可以使用:
Dir.glob('your_directory/**/*.rb').map do |file|
File.foreach(file).count
end.reduce(:+)
这会计算.rb
及其子目录中your_directory
个文件的所有行。虽然我建议为空行和注释行添加一些处理。有关Dir::glob
答案 2 :(得分:0)
@BinaryMee和@engineersmnky感谢您的回复。
我尝试了两种不同的解决方案,其中一种使用“readlines”得到了@gicappa
的答案Count the length (number of lines) of a CSV file?
使用cloc的另一种解决方案。我运行了命令
%x{perl #{ClocPath} #{path-to-file} > result.txt}
并将结果保存在result.txt
中cloc以图形形式返回结果(我无法上传图像),它还会报告空白行,注释行和代码行的数量。正如我所说,我对代码行感兴趣。所以,我打开文件并使用正则表达式来获取我需要的数字。
content = File.read("#{path}/result.txt")
line = content.scan(/(\s+\d+\s+\d+\s+\d+\s+\d+)/)
total = line[0][0].split(' ').last
这里的内容将包含文件的内容,然后行将从文件中获取此行:
C#1 3 3 17
C#是文件的语言,1是文件数,3是空行数,3是注释行数,17是代码行数。我从cloc的脚本中获得了格式的帮助。总数则为17。
如果您只阅读特定文件,此解决方案将有所帮助,如果您正在阅读多个文件的行,则需要添加更多解决方案。
希望这有助于谁需要它。
此致 ARWA