本文目录导读:

Windows 系统
PowerShell 模糊查找
# 查找包含"report"的所有文件
Get-ChildItem -Path C:\ -Filter *report* -Recurse -ErrorAction SilentlyContinue
# 使用通配符灵活匹配
Get-ChildItem -Path D:\Docs -Filter "project_20??_*.txt"
# 正则表达式匹配
Get-ChildItem -Recurse | Where-Object {$_.Name -match "data_\d{4}_v\d"}
CMD 命令
dir /s /b *keyword* dir /s /b *part1*part2*
Linux/Mac 系统
find 命令(推荐)
# 基本模糊查找 find /home -name "*report*" # 忽略大小写 find /var -iname "*log*" # 组合条件 find / -type f \( -name "*.txt" -o -name "*.doc" \) -name "*project*" # 使用通配符 find . -name "data_[0-9][0-9][0-9][0-9]_v*"
grep 管道
# 列出包含特定模式的文件 ls -la | grep -i "pattern" # 递归查找内容包含关键词的文件 grep -rl "error" /var/log/
Python 跨平台脚本
import os
import fnmatch
def fuzzy_find(root_dir, pattern):
matches = []
for root, dirs, files in os.walk(root_dir):
for filename in fnmatch.filter(files, pattern):
matches.append(os.path.join(root, filename))
return matches
# 使用示例
files = fuzzy_find("C:/Projects", "*report*2024*")
for f in files:
print(f)
# 更灵活的正则匹配
import re
def regex_find(root, regex):
pattern = re.compile(regex, re.IGNORECASE)
for root, dirs, files in os.walk(root):
for f in files:
if pattern.search(f):
yield os.path.join(root, f)
常用模糊模式示例
| 通配符 | 含义 | 示例 | 匹配结果 |
|---|---|---|---|
| 任意字符(0或多个) | *data* |
data, mydata.txt, database | |
| 单个字符 | data_??.txt |
data_01.txt, data_ab.txt | |
[abc] |
指定字符集 | [Rr]eport |
Report, report |
[!abc] |
排除字符集 | [!0-9]* |
不以数字开头 |
高级模糊搜索(基于相似度)
from fuzzywuzzy import fuzz # 需安装
import os
def fuzzy_search(root, target, threshold=70):
results = []
for root, dirs, files in os.walk(root):
for f in files:
score = fuzz.ratio(target, f.split('.')[0])
if score >= threshold:
results.append((f, score))
return sorted(results, key=lambda x: -x[1])
# 使用:查找相似度>75%的文件
for name, score in fuzzy_search("C:/Docs", "quarterly_report"):
print(f"{score}% {name}")
实用建议
- Windows用户:PowerShell 的
-like和-match是最灵活的方法 - Linux用户:
find+-name是最快速的标准方法 - 跨平台需求:Python 的
os.walk+fnmatch或pathlib - 大目录:先限制搜索路径范围,避免全盘扫描
需要针对特定场景的示例吗?