外观
🎈 想读易懂版?
本章有易懂版(大白话讲重点,10 分钟读完):[第 11 章 文件与目录:整理、搜索、批量处理(易懂版)](../../easy/第11章 文件与目录:整理、搜索、批量处理(易懂版).md)
第 11 章 文件与目录:整理、搜索、批量处理
本章目标:掌握文件类任务的三板斧——整理、搜索、批量处理,以及批量操作的安全规程。文件任务的精髓是"先看清楚,再动手,动完留痕"。批量操作不怕慢,就怕不可逆。
11.1 场景:文件越堆越多,找东西越来越难
电脑里的文件越堆越多,找东西越来越难。文件类任务包括三大类:
| 类别 | 说明 | 典型例子 |
|---|---|---|
| 整理 | 归档、重命名、统一格式 | 整理下载目录、批量重命名 |
| 搜索 | 按文件名找、按内容找 | 找某个报告、搜某段代码 |
| 批量处理 | 成百上千个文件的统一操作 | 全部转码、统一加头注释 |
11.2 找文件:用对工具
11.2.1 工具对照表
| 需求 | 工具 | 示例 |
|---|---|---|
| 按文件名/扩展名找 | Glob | **/*.md 找所有 Markdown |
| 按内容找 | Grep | 搜 "TODO" 或函数名 |
| 看目录结构 | 目录列表 | 了解项目布局 |
| 看文件内容 | Read | 读具体文件 |
11.2.2 黄金法则
找文件用 Glob,搜内容用 Grep。
不要让我用命令行的 find/grep 绕路——专用工具更快、更安全、更好追踪。
两者的关键区别:
| Glob(按名找) | Grep(按内容找) | |
|---|---|---|
| 找什么 | 文件名/路径 | 文件里的文字 |
| 典型问题 | "项目里有哪些 .md 文件?" | "这个报错出现在哪些文件?" |
| 使用场景 | 盘点资源 | 定位问题 |
组合技巧
先用 Glob 缩小范围,再用 Grep 精确搜索。 比如:"先在 src/ 下找所有 .py(Glob),再在结果里搜 'user_id'(Grep)"——两步就把问题范围从全项目缩小到几个文件。
11.3 案例:整理一个混乱的下载目录
11.3.1 指令
整理 downloads/ 目录:
- 图片 → 按年月归档到 photos/2026-08/
- 文档 → 按类型归档到 docs/{pdf,word,sheet}/
- 其他 → 移到 archive/
先给出整理计划(会移动哪些文件),我确认后再执行。11.3.2 我的做法(逐步拆解)
① 列出目录全貌:文件总数、类型分布、命名规律
② 生成"整理计划表":
源文件 → 目标位置(每个文件的去向你都看得见)
③ 标注潜在冲突(重名、目标目录已存在同名)
④ 你确认计划 → 执行移动
⑤ 输出变更日志(哪些文件去了哪里)→ 可回退11.3.3 为什么必须"先出计划"
整理是不可逆操作(移动后路径就变了),出计划 = 给后悔留一条路。
- 计划阶段发现问题:改一行计划即可;
- 执行后发现问题:路径全变了,找回来很痛苦。
11.4 批量处理:安全第一
批量操作最容易出事,所以规矩更多:
| 规矩 | 说明 | 示例 |
|---|---|---|
| 先统计后动手 | 先说清规模 | "共有 342 个文件要移动" |
| 先试运行 | 能模拟就先模拟 | 干跑模式、-WhatIf |
| 保留日志 | 每步有记录,可撤销 | 输出变更日志文件 |
| 不可逆操作前必须确认 | 删除、覆盖、改名冲突 | 逐项列出再问 |
批量操作三问
执行任何批量操作前,先过三问:
- 影响多少个文件?(数量)
- 操作可逆吗?(删除/覆盖 = 不可逆)
- 出错怎么回退?(日志/备份)
11.5 内容搜索的进阶用法
Grep 不只是"搜关键词",它支持正则表达式和组合条件:
| 用法 | 示例 | 效果 |
|---|---|---|
| 正则表达式 | err.*\d{4} | 匹配 err 后跟 4 位数字 |
| 大小写不敏感 | 搜 readme | 同时匹配 README/ReadMe |
| 限定文件类型 | 只在 *.rs、*.md 里搜 | 缩小范围 |
| 多模式组合 | 一次搜多个模式 | 同时找 TODO 和 FIXME |
例:在 src/ 里搜所有包含 "TODO" 或 "FIXME" 的代码行11.5.1 搜索策略
- 从宽到窄:先全局搜,再按文件类型、目录缩小;
- 关键词要多备几个:同义词、缩写、大小写变体;
- 搜不到 ≠ 不存在:可能编码问题或关键词不对,换个说法再试。
11.6 文件任务的完整流程模板
① 盘点:Glob/列目录 → 搞清楚有什么
② 规划:整理计划 / 处理方案(给你确认)
③ 试运行:能模拟先模拟,列清单
④ 执行:动手(留日志)
⑤ 验证:抽查结果,确认符合预期
⑥ 汇报:改了什么、去哪了、有无异常六步走完,文件任务稳如老狗。
11.7 练习
- 让我用 Glob 列出某个目录下的全部文件,按类型统计;
- 给我一个真实的整理需求,要求"先出计划再执行";
- 用 Grep 搜一个你关心的关键词(正则或大小写不敏感),看看发现;
- 走一遍完整六步流程:盘点 → 规划 → 试运行 → 执行 → 验证 → 汇报。
小结:文件任务的精髓是**"先看清楚,再动手,动完留痕"**。批量操作不怕慢,就怕不可逆——先统计、先试运行、留日志、要确认,四道保险缺一不可。下一章:数据与表格。