如何查找一个目录中所有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文件筛选出,但是却不是按行输出。

如何查找一个目录中所有c文件的总行数的更多相关文章

  1. python从一个目录中复制全部文件图片至另一个目录中,及删除指定目录中的图片

    import shutil import os #目录自己改一下即可,复制 path = "./static/imgs/" new_path = "./static/up ...

  2. python 之 查找某目录中最新的文件

    记录一下这个方法,感觉很有用!>.< import os def find_newest_file(path_file): lists = os.listdir(path_file) li ...

  3. linux复制指定目录下的全部文件到另一个目录中

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  4. 在Windows下通过命令行或者.bat文件统计一个目录中文件数量

    在Windows下面怎样通过命令行统计一个目录中文件的数量,或者说,如果在一个.bat文件中,统计一个目录中的文件数量? 我原来以为是不可能的,要编一个vbs程序什么的,后来到网上找了下,发现还真是可 ...

  5. python glob 用通配符查找指定目录中的文件 - 开源中国社区

    python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件

  6. linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  7. Android开发---如何操作资源目录中的资源文件4 ---访问xml的配置资源文件的内容

    Android开发---如何操作资源目录中的资源文件4 XML,位于res/xml/,这些静态的XML文件用于保存程序的数据和结构. XmlPullParser可以用于解释xml文件 效果图: 描述: ...

  8. Android开发---如何操作资源目录中的资源文件3--圆角边框、背景颜色渐变效果、边框颜色

    Android开发---如何操作资源目录中的资源文件3 效果图 1.圆角边框 2.背景颜色渐变效果 1.activity_main.xml 描述: 定义了一个shape资源管理按钮 <?xml ...

  9. Android开发 ---如何操作资源目录中的资源文件2

    Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...

随机推荐

  1. css 文字超出俩行省略号显示

    .center-titles{ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: ...

  2. (四)羽夏看C语言——循环与跳转

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  3. Django——实现最基础的评论功能(只有一级评论)

    我对评论功能的理解: --------(1)数据库建一个评论的表 --------(2)前端建一个提交评论的form表单 --------(3)表单提交评论内容后写入到数据库评论表中 -------- ...

  4. set类型数据的操作指令

    集合无序,无下标. 1. 也可以在集合上继续添加元素. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

  5. C# Equals方法和==有什么区别

    开发工具:VS2019 一.关于这两个比较,需要从值类型和引用类型两方面来说 (A)先说值类型 上图: 因为在对值类型进行比较时候,不管 .Equals() 方法还是 == 方法,都是对值类型变量(图 ...

  6. adb 常用命令大全(6)- 模拟按键输入

    语法格式 input [<source>] <command> [<arg>...] 物理键 # 电源键 adb shell input keyevent 26 # ...

  7. JVM-调优-命令

    目录 jps 命令格式 option参数 示例 jstat 命令格式 参数 option 参数总览 option 参数详解 -class -compiler -gc -gccapacity -gcut ...

  8. MySQL MHA高可用集群部署及故障切换

    一.MHA概念MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件.MHA 的出现就是解决MySQL 单点的问题.MySQL故障切换过程中 ...

  9. 完美数java

    完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该数为&q ...

  10. JavaScript深拷贝实现方式

    1.递归 function deepCope (obj) { // 要拷贝的数据为引用类型属性(数组或对象) if (obj && typeof obj === 'object') { ...