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

作者: goto2091

如何查找一个目录中所有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 ''` 

知识点 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文件筛选出,但是却不是按行输出。

原文创作:goto2091

原文链接:https://www.cnblogs.com/goto2091/p/13752330.html

更多推荐

更多
  • Azure数据工程指南-二十四、数据治理的权限 创建 azure 预览帐户,探索 azure 预览,探索词汇表,浏览资产,以编程方式使用预览,摘要,管理凭证和访问,创建扫描, 许多组织需要建立数据治理流程、标准和方法,并且已经能够使用内部 SQL Server 工具(如 Master
    Apache CN

  • Azure数据工程指南-二十二、Synapse 分析工作区 创建 Synapse 分析工作区,使用 Spark 探索样本数据,用 SQL 查询数据,用 SQL 创建外部表,摘要, 微软 Azure 数据平台的众多新增功能已经围绕许多类似的产品及其在现代 Azure 数据平台中的用途产生了兴奋和困
    Apache CN

  • Azure数据工程指南-二十三、数据块中的机器学习 创建 MLflow 实验,安装 MLflow 库,创建笔记本,选择性测井,自动记录,摘要, 寻求利用机器学习(ML)和人工智能能力的组织和开发人员花费大量时间构建 ML 模型,并寻求一种方法来简化他们的机器学习开发生命周期,以跟踪实验,
    Apache CN

  • Azure数据工程指南-二十一、将 Apache Spark 的 GraphFrame API 用于图形分析 安装 JAR 库,加载新数据表,将数据加载到数据块笔记本中,用顶点和边构建一个图,查询图表,寻找有图案的图案,用 PageRank 发现重要性,探索入度和出度度量,摘要,进行广度优先搜索,查找连接的组件, 图形技术使用户能够以图形的形式
    Apache CN

  • Azure数据工程指南-20 二十、部署 SQL 数据库先决条件,创建 Visual Studio SQL 数据库项目,安装 Visual Studio GitHub 扩展,导入 AdventureWorks 数据库,连接到 GitHub Repo 源代码控制,将
    Apache CN

  • Azure数据工程指南-十九、部署数据工厂更改 先决条件,创建 DevOps 持续集成构建管道,创建 DevOps 持续部署发布渠道,验证部署的数据工厂资源,摘要,Azure PowerShell 任务停止触发器,ARM 模板部署任务,Azure PowerShell 任务启动触发器
    Apache CN

  • Azure数据工程指南-十八、用于 Cosmos DB 的 Azure Synapse 链接 创建一个 Azure Cosmos DB 帐户,启用 Azure Synapse 链接,创建一个 Cosmos DB 容器和数据库,将数据导入 Azure Cosmos DB,在 Azure Synapse Analytics 中创建
    Apache CN

  • Azure数据工程指南-十六、流分析异常检测 先决条件,创建流分析输入和输出,创建实时电源 BI 仪表板,监控实时电源 BI 流,摘要,创建 Azure 流分析作业,创建物联网中心,创建 Power BI 服务,下载设备模拟器,添加流输入,添加流输出,编写流分析查询,启动流分析作业
    Apache CN

  • Azure数据工程指南-十七、使用 Apache Spark 的实时物联网分析 先决条件,创建物联网中心,创建数据块集群,安装 Maven 库,创建笔记本并运行结构化流查询,摘要,配置笔记本连接,开始结构化流,启动物联网设备模拟器,显示实时流数据,创建 Spark SQL 表,将流写入增量表, 实时物联网分析、高级
    Apache CN

  • Azure数据工程指南-十五、DeltaLake 为什么是酸性 DeltaLake,先决条件,创建并插入 DeltaLake,更新 DeltaLake,从 DeltaLake 删除,浏览增量日志,摘要,插入,更新,删除, 在使用 Azure Data Lake Storage Gen2
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多