• 如何查找一个目录中所有c文件的总行数


    如何查找一个目录中所有c文件的行数

    面试题问到了一题,如何统计wc文件夹下所有文件的行数,包括了子目录。
    最后在 https://blog.csdn.net/a_ran/article/details/43939261
    中找到了方法。

    wc -l `find . -name *.c`
    find 会递归地寻找当前目录的所有符合要求的文件, *.c是正则表达式,即以.c结束的所有文件,惰性匹配。
    wc -l 统计文件的行数,如果是多个文件的话,则会有total行统计总数。
    

    如果用find . -name *.c | wc -l结果会如何呢?
    结果不是统计出所有c文件的行数以及和,而是统计出了所有c文件的数量,这是为什么呢?
    因为 find . -name *.c | 用了管道之后,之前的结果实际上是被输出到了标准输出中,也就是说,改结果被作为了一个文件,文件中是所有c文件的名字
    一行行地排列。
    而上文的写法, wc -l 后面的是 值类型,这样就实际上统计了所有的文件并且得到行数。

    接下来是将统计所有行数的那一行提取,

    wc -l `find . -name *.c | grep total | awk '{print $1}'` 
    

    知识点

    wc命令用于统计文件内容的行数、单词数和字母数目。

    wc用于统计和计算字数,Byte数,字数,或者列数,如果不指定文件名称,或者文件名为'-',则wc指令会从标准输入设备读取数据。

    wc [-lwc] filename
    显示 行数,单词数 和 字节数。
    wc -l 是指仅统计行数, l是line的简写
    wc -w 则显示字数。
    wc -c 显示字节数
    

    wc基本就是以上的三个参数。
    wc无法统计当前目录子目录下的文件行数。所以需要和其他进行组合。

    首先,如何显示当前目录下包括子目录的所有的c文件?
    grep能否查找文件?

    grep的本意是过滤,找到的是字符串所在的行
    grep一般是查找文件内部的字符串,并把符合要求的行输出。
    例如 grep main test.cc 
    意思是找到 test.cc中有main字符串的行,并且把所有符合条件的行输出。
    如果需要知道它们的行数,则加-n 
    grep -n main test.cc
    
    grep的本质是过滤找行,所以它无法直接找文件名。
    

    首先是递归获取当前目录下的所有文件,然后用grep过滤所有的c文件,然后用wc统计行数

    ls -lR,获取所有的文件,R是递归
    grep 筛选出所有c文件
    wc -l,统计它们的行数
    再把所有的行数加起来
    
    

    参考 https://blog.csdn.net/mr_wangning/article/details/90923176

    使用了ls -lR,-l会把文件的权限等多余信息写出来,但是是按行显示。
    于是只用 ls -R *.c ./, 这样确实会把当前目录的所有的c文件筛选出,但是却不是按行输出。

  • 相关阅读:
    微信支付
    集成支付宝SDK流程
    使用ASIFormDataRequest完成用户的登录操作
    本地推送UILocalNotification
    iOS 远程推送通知 详解
    iOS 8 中如何集成 Touch ID 功能
    iOS指纹识别Touch ID的安全性探讨
    iOS 支付(含支付宝、银联、微信)
    iOS 社交化分享功能
    Python3内建函数sorted
  • 原文地址:https://www.cnblogs.com/goto2091/p/13752330.html
Copyright © 2020-2023  润新知