本文目录导读:

- Linux / Mac 终端(最常用,Bash 脚本)
- 统计单个文件行数(Linux / Mac)
- Windows(CMD 批处理脚本)
- Python 通用脚本(跨平台,最灵活)
- 只统计“代码行”数(忽略空行和注释)
- 总结:用哪个?
“行数统计脚本”的需求非常常见,根据你使用的环境(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
使用方式:
- 保存为
count_lines.sh - 终端执行:
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),请告诉我,我可以帮你修改脚本。