行数统计脚本怎么写?

wen 实用脚本 40

本文目录导读:

行数统计脚本怎么写?

  1. Linux / Mac 终端(最常用,Bash 脚本)
  2. 统计单个文件行数(Linux / Mac)
  3. Windows(CMD 批处理脚本)
  4. Python 通用脚本(跨平台,最灵活)
  5. 只统计“代码行”数(忽略空行和注释)
  6. 总结:用哪个?

“行数统计脚本”的需求非常常见,根据你使用的环境(Linux/Mac 终端、Windows、还是 Python),写法完全不同。

我整理了以下几种最常用的场景以及对应的脚本代码:

Linux / Mac 终端(最常用,Bash 脚本)

如果你需要统计当前目录下所有文件,或特定类型文件的总行数。

脚本功能: 统计当前目录下所有 .py 文件的总行数。

#!/bin/bash
# 文件名: count_lines.sh
# 统计当前目录下所有 .py 文件的行数(包含子目录)
find . -name "*.py" | xargs wc -l
# 如果只想看总行数,不要明细:
# find . -name "*.py" -exec wc -l {} + | tail -1

使用方式:

  1. 保存为 count_lines.sh
  2. 终端执行:chmod +x count_lines.sh && ./count_lines.sh

不局限于 .py:"*.py" 换成 "*.js""*.txt" 或 (所有文件)即可。


统计单个文件行数(Linux / Mac)

这个是最简单的,但也是最实用的。

# 统计一个文件
wc -l filename.txt
# 结果会显示: 行数 文件名

Windows(CMD 批处理脚本)

如果你在 Windows 自带的命令行下工作。

脚本功能: 统计当前目录下所有 .txt 文件的行数总和。

@echo off
setlocal enabledelayedexpansion
set total=0
for %%i in (*.txt) do (
    for /f %%j in ('type "%%i" ^| find /v /c ""') do (
        set /a total+=%%j
    )
)
echo 总行数:%total%
pause

保存为 count_lines.bat,双击或运行即可。


Python 通用脚本(跨平台,最灵活)

如果你装了 Python,这是一个功能更强大的选择,它可以统计多种文件,并跳过空行或注释(以 开头)。

# 文件名: count_lines.py
import os
def count_lines_in_file(filepath):
    """统计单个文件的行数(跳过空行)"""
    count = 0
    with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
        for line in f:
            if line.strip():  # 只统计非空行
                count += 1
    return count
def count_lines_in_directory(path, extensions=None):
    """
    统计目录下所有指定扩展名文件的总行数
    :param extensions: ['.py', '.txt']
    """
    total = 0
    for root, dirs, files in os.walk(path):
        for file in files:
            if extensions:
                if not any(file.endswith(ext) for ext in extensions):
                    continue
            filepath = os.path.join(root, file)
            lines = count_lines_in_file(filepath)
            total += lines
            print(f"{filepath}: {lines} 行")
    print(f"\n总共: {total} 行")
if __name__ == "__main__":
    # 使用示例:统计当前目录下所有 .py 和 .txt 文件
    count_lines_in_directory(".", extensions=[".py", ".txt"])

使用方式:

python count_lines.py

只统计“代码行”数(忽略空行和注释)

这个需求在代码审查中很常见,上面 Python 脚本已经支持忽略空行,下面是一个更纯粹的例子(Linux):

# 统计当前目录所有 .py 文件,排除空行和以 # 开头的行
find . -name "*.py" -exec grep -v -E '^$|^#' {} + | wc -l

用哪个?

场景 推荐
Linux/Mac 命令行快速统计 find . -name "*.py" \| xargs wc -l
Windows 简单统计 CMD 批处理脚本或 Git Bash
需要忽略空行/注释 Python 脚本
需要图形化或深层分析(如分语言统计) 工具 cloc

如果需要统计指定多个目录排除某些目录(如 node_modules),请告诉我,我可以帮你修改脚本。

抱歉,评论功能暂时关闭!