码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux环境下统计目录下所有文件的行数


    文章目录

    • 前言
    • wc命令
      • 常用选项
    • 统计文件行数
      • 统计1个文件行数
      • 统计2个文件行数
      • 统计当前目录下python代码文件数量
      • 统计当前目录下python代码文件行数
      • 统计当前目录下python代码文件非空行数
      • 统计当前目录下2种代码文件的总行数
    • 总结

    前言

    工作中时常有统计数据行和代码行的需求,虽然能依次打开每个文件数一下,但是这样操作效率太低了,如果是在linux环境中,可以使用一个常用的命令 wc,一起记录一下常见的用法吧。

    wc命令

    wc命令,(全称water closet,洗手间,哦,错了),全称word count?我也没找到,作用就是输出每个文件包含的行数、单词数和字节数,这三项是基础信息也是最常用的信息,此外它还可以输出文件中字符数量、输出文件中最长行的长度。

    使用方法非常简单,直接在命令末尾添加文件名就行了

    $ wc README.md
      35   60 2460 README.md
    
    • 1
    • 2

    上面的信息显示,README.md文件中包含25行内容,存在60个单词,共有2460个字节,可能是因为该文件中包含中文,所以单词数统计不太准确。

    常用选项

    该命令各选项含义如下:

    • - l: 统计行数
    • - w: 统计字数
    • - c:统计字节数
    • - m:统计字符数
    • - L:统计最长行的长度

    其中 - l 使我们统计行数的利器

    统计文件行数

    wc 命令搭配一些其他的命令能更方便的完成统计工作

    统计1个文件行数

    $ wc -l README.md
    35 README.md
    
    • 1
    • 2

    统计2个文件行数

    wc 命令后名跟多个文件名时会打印出每个文件的行数,并且在最后一行显示所有文件总行数

    $ wc -l README.md test.txt
      35 README.md
       3 test.txt
      38 total
    
    • 1
    • 2
    • 3
    • 4

    统计当前目录下python代码文件数量

    $ find ./ -name "*.py" | wc -l
    317
    
    • 1
    • 2

    统计当前目录下python代码文件行数

    $ find ./ -name "*.py" | xargs cat | wc -l
    38538
    
    • 1
    • 2

    统计当前目录下python代码文件非空行数

    $ find ./ -name "*.py" | xargs cat | grep -v ^$ | wc -l
    35320
    
    • 1
    • 2

    实现的方式就是在输出文件内容的过程中过滤掉空行,但我认为统计代码行数时不应该过滤空行,适当的留白也是优秀代码的一部分

    统计当前目录下2种代码文件的总行数

    一个项目中使用的代码往往不止一种,所以在统计代码行数时要考虑多种代码文件,可以写多个-name选项或者使用正则表达式

    $ find ./ -regex '.*\.\(py\|h\)' | xargs cat | wc -l
    39795
    $ find ./ -regextype posix-extended -regex '.*\.(py|h)' | xargs cat | wc -l
    39795
    $ find ./ -name "*.py" -o -name "*.h" | xargs cat | wc -l
    39795
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    总结

    • wc 命令是用来查询文件行数的核心命令,不加选项时默认输出文件行数、单词数、字节数
    • wc 命令配合 find、xargs、cat 等命令可以统计出目录内指定类型文件的总行数
    • find 查找多个文件的常用写法 find ./ -regex '.*\.\(py\|h\)' 或 find ./ -name "*.py" -o -name "*.h"
    • 查项目全部代码量终极大招:find ./ -regex '.*\.\(py\|lua\|go\|h\|hpp\|cpp\|c\|cc\)' | xargs cat | wc -l

    ==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

    确实挺难的,再坚持一下~

  • 相关阅读:
    AQS 框架中 setState() 和 setExclusiveOwnerThread() 方法顺序问题
    全网最牛,Pytest自动化测试框架-Fixture测试夹具详解(撸码实例)
    基于JavaWeb的大学迎新系统设计与实现(源码+数据库脚本+论文+开题报告)
    设计模式学习笔记 - 开源实战二(中):从Unix开源开发学习应对大型复杂项目开发
    【虚幻引擎UE】UE4/UE5 通用插件推荐及使用介绍
    解决ubuntu无法上网问题
    redis 源码分析:Jedis 哨兵模式连接原理
    《代码大全2》第10章 使用变量的一般事项
    天软特色因子看板 (2023.10 第05期)
    electron
  • 原文地址:https://blog.csdn.net/shihengzhen101/article/details/128141483
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号