Linux终端统计非二进制文件行数的实现方法

在Linux终端中统计非二进制文件的行数是一个常见需求,特别是在代码分析、项目统计等场景。以下是几种高效可靠的方法:

图片[1]_Linux终端统计非二进制文件行数的实现方法_知途无界

方法一:使用findfile命令组合

find . -type f -exec grep -Iq . {} \; -exec wc -l {} + | tail -n1

分解说明:

  1. find . -type f – 查找当前目录及子目录下所有文件
  2. -exec grep -Iq . {} \; – 使用grep -I跳过二进制文件,-q静默模式
  3. -exec wc -l {} + – 对筛选出的文件执行行数统计
  4. tail -n1 – 显示总行数

方法二:使用grepawk组合

grep -rI --include="*.*" . -c | awk -F: '{sum += $2} END {print sum}'

参数说明:

  • -r 递归搜索
  • -I 忽略二进制文件
  • --include="*.*" 只检查有扩展名的文件(可选)
  • awk部分计算并输出总行数

方法三:精确识别文本文件的方法

find . -type f -exec file {} + | grep -i text | cut -d: -f1 | xargs wc -l | tail -n1

步骤解析:

  1. file命令识别文件类型
  2. grep -i text筛选文本文件
  3. cut提取文件名
  4. xargs wc -l统计行数

方法四:针对特定代码文件的统计

find . -name "*.py" -o -name "*.js" -o -name "*.html" | xargs wc -l | tail -n1

说明:

  • 明确指定要统计的文件扩展名
  • 适合需要精确控制文件类型的场景

高级技巧:排除特定目录

find . -type f -not -path "./node_modules/*" -not -path "./.git/*" -exec grep -Iq . {} \; -exec wc -l {} + | tail -n1

各方法对比

方法优点缺点适用场景
方法一准确识别非二进制文件速度较慢需要严格区分二进制/文本
方法二执行速度快可能误判部分文件快速统计
方法三最准确需要多次管道操作精确统计
方法四针对性强需要手动指定类型代码项目统计

注意事项

  1. 大项目统计可能耗时,建议在项目根目录执行
  2. 某些文本文件可能被误判为二进制(如UTF-16编码文件)
  3. 使用-not -path可以排除不想统计的目录
  4. 对于特别大的代码库,可以考虑使用cloc等专业工具

以上方法可以根据实际需求灵活组合使用,满足不同场景下的行数统计需求。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞47 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容