如何从文件夹文件列表中搜索并统计指定模式的索引出现次数?
嘿,这需求我碰到过好多次了,给你两种实用的实现方案,不管你是习惯写代码还是用命令行快速搞定都能适配👇
方法一:Python脚本(灵活可控,适合复杂场景)
如果需要后续扩展(比如加更多颜色、处理特殊格式文件),用Python脚本是最稳妥的选择,步骤如下:
- 首先,确保你已经安装了Python(一般系统自带),然后创建一个
count_index.py文件,把下面的代码贴进去:
import os import re from collections import defaultdict # 定义要搜索的颜色和索引类型 COLORS = ["Red", "Blue", "Green"] INDEX_TYPES = ["START", "END"] # 初始化计数器:键是"颜色_索引类型",值是出现次数 counter = defaultdict(int) # 替换成你的目标文件夹路径 target_folder = "/path/to/your/files" # 遍历文件夹里的所有文件 for root, dirs, files in os.walk(target_folder): for file in files: file_path = os.path.join(root, file) # 跳过文件夹,只处理文件 if not os.path.isfile(file_path): continue # 读取文件内容(如果是大文件,建议逐行读取优化内存) with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: content = f.read() # 匹配所有"颜色_索引类型"的模式 matches = re.findall(r'(' + '|'.join(COLORS) + ')_(' + '|'.join(INDEX_TYPES) + ')', content) # 统计每个匹配项的次数 for color, idx_type in matches: counter[f"{color}_{idx_type}"] += 1 # 输出统计结果 print("统计结果:") for key, count in sorted(counter.items()): print(f"{key}: {count} 次")
- 把代码里的
/path/to/your/files替换成你的实际文件夹路径,然后运行python count_index.py就能看到结果了。 - 小提示:如果你的文件是超大文件,把
content = f.read()改成逐行读取(for line in f:),避免内存占用过高。
方法二:命令行工具(快速便捷,适合Linux/macOS)
如果你不想写代码,用系统自带的命令行工具就能快速搞定,一行命令就行:
grep -r -o '\(Red\|Blue\|Green\)_\(START\|END\)' /path/to/your/folder | awk '{count[$0]++} END {for (key in count) print key, count[key]}'
拆解一下这个命令的作用:
grep -r:递归搜索目标文件夹里的所有文件-o:只输出匹配到的部分(而不是整行)\(Red\|Blue\|Green\)_\(START\|END\):匹配所有"颜色_索引类型"的模式awk '{count[$0]++} END {for (key in count) print key, count[key]}':统计每个匹配项的出现次数并输出
如果是Windows系统,没有grep和awk的话,可以用PowerShell替代:
Get-ChildItem -Path "C:\path\to\your\folder" -Recurse | Select-String -Pattern '(Red|Blue|Green)_(START|END)' | ForEach-Object { $_.Matches.Value } | Group-Object | Select-Object Name, Count
注意事项
- 如果你的文件里的模式有大小写区分(比如
red_start和Red_START算不同的),要确保正则或命令里的匹配规则和实际一致; - 如果文件名包含特殊字符(比如空格、中文),Python脚本的兼容性更好;
- 可以根据实际需求调整颜色列表或索引类型,比如加
Yellow或者MIDDLE之类的。
内容的提问来源于stack exchange,提问作者Uvais
相关产品推荐
相关产品推荐

