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