如何查找一个目录中所有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. JDK1.8源码(二)——java.lang.Integer类

    一.初识 1.介绍 int 是Java八大基本数据类型之一,占据 4 个字节,范围是 -2^31~2^31 - 1,即 -2147483648~2147483647.而 Integer 是 int 包 ...

  2. Redis中关于key的操作指令

    1.keys: 例如: 2.exists 3.move 将指定的数据移动到指定的库 4.expire 5.tt1 6.type 7.rename 8.del

  3. 20210719 noip20

    考场 后两题是原题,教练说不用写了(ycx 不讲武德) T1 先手模了 \(n\le5\) 的情况,尝试找规律失败.那就只能 DP 了,最终没搞出来. 记忆化搜索打了 \(n\le20\) 的表,交了 ...

  4. Python - 执行cmd命令

    python操作cmd 我们通常可以使用os模块的命令进行执行cmd 方法一:os.system os.system(执行的命令) # 源码 def system(*args, **kwargs): ...

  5. 安装 Ubuntu 21.04 后必备的绝佳应用大合集(持续更新中)

    @ 目录 一.Google Chrome 浏览器 1.下载 2.安装 3.设置搜索引擎 二.火焰截图(替代QQ截图) 1.简介: 2.安装: 3.设置快捷键: 三.VLC视频播放器(替代Potplay ...

  6. vue 进入页面每次都调用methods里的方法

    // 监听路由,每次进入页面调用方法,放在method里 mounted(){ this.getPath() }, methods: { getPath(){ console.log(this.$ro ...

  7. [Linux系列]DNS系列理论笔记与DNS服务器配置

    0x01 基础术语 DNS(Domain Name System,域名系统),域名和IP地址相互映射的一个分布式数据库,简而言之就是通过更易记忆的域名代替IP去访问一个网站. FQDN(Fully Q ...

  8. 树莓派OLED模块的使用教程大量例程详解

    简介 Python有两个可以用的OLED库 [Adafruit_Python_SSD1306库]->只支持SSD1306 [Luma.oled库]->支持SSD1306 / SSD1309 ...

  9. java.net.NoRouteToHostException: 无法指定被请求的地址

    今天压力测试时, 刚开始出现了很多异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address.  经网上查资料, 是 ...

  10. Hyper-V + WSL2与 VirtualBox 共存

    Hyper-V + WSL2与 VirtualBox 共存 这样的教程网上有很多,我先简单复述一下.真正麻烦的是我遇到的问题--开启 Hyper-V 后我的电脑会多出几个删不掉的虚拟显示器来,会在文章 ...