批量整理电子书库:Bash 脚本清理 z-library 水印 + 按主题分类
一个 Bash 脚本搞定 118 本电子书的水印清理、主题分类和 CLI 自动化验证
写在前面
电子书库的整理是一个看似简单、实则暗坑无数的活儿。我手头 118 本中英文电子书堆在 /data/Book 目录下,文件名末尾全带着 (z-library.sk, 1lib.sk, z-lib.sk) 水印,分类混乱,找书全靠记忆。更烦的是,这种「先用着再说」的将就感会随着书越来越多而指数级放大。
这次干脆一步到位:写两个 Bash 脚本把水印清干净、按主题自动归类,顺便验证一下能不能用OpenCode指挥本机的 OpenClaw CLI 智能体干活。全程不碰 GUI,终端搞定。
一、清理文件名水印标记
问题现场
118 本书,每一本都长这样:
1000 种赚钱方法知识星球精华 (ixinzhi) (z-library.sk, 1lib.sk, z-lib.sk).epubz-library.sk、1lib.sk、z-lib.sk 三个标记串散落在文件名末尾,手动改 118 个文件显然不现实。

方案:clean_names.sh
核心逻辑简单:遍历当前目录所有文件,检测是否包含预定义的标记字符串,命中则用 Bash 参数展开去掉。
#!/bin/bash
# clean_names.sh - 批量清理 z-library 文件名水印标记
markers=("(z-library.sk, 1lib.sk, z-lib.sk)" "(z-lib.sk)" "(1lib.sk)")
count=0
skip=0
for file in *; do
[[ -f "$file" ]] || continue
newname="$file"
for marker in "${markers[@]}"; do
newname="${newname//$marker/}"
done
[[ "$file" == "$newname" ]] && { ((skip++)); continue; }
mv -v "$file" "$newname" && ((count++))
done
echo "重命名 $count 个文件,跳过 $skip 个"踩坑修复
第一次跑完,117 个文件成功重命名,但新文件名在扩展名前多了个空格,变成 xxx (ixinzhi) .epub。修复时又踩了第二个坑——mv 时删掉了扩展名前的点号,变成 xxxepub。好在及时 mv 把点号补了回来,最终所有文件名规整为 书名 (作者).扩展名 格式。
教训:文件名操作一定要先 dry-run 预览,再实操。
二、按主题自动归类
需求澄清
这里有个容易理解错的地方:不是按书名建目录(一本书一个目录毫无意义),而是按主题建二级目录,把相关书籍归类进去。

方案:organize_books.sh
脚本顶部定义一个 rules 数组,格式为 目录名|关键词正则,可以自行增删改。按规则顺序匹配,先命中者优先。
#!/bin/bash
# organize_books.sh - 按主题关键词自动归类书籍
rules=(
"创业|一人公司|副业|零工"
"钱|赚钱|财富|变现|现金流|投资理财"
"思维与成长|思维|认知|人性|学习|精进"
"文学与小说|十宗罪|福尔摩斯|川端康成|名著"
"管理|管理学|商业|企业创新"
"写作|写作术|文案|写作课"
"历史与传记|史记|货殖|范蠡|伟人传略"
"营销与运营|营销|运营|定位"
"经济学|经济学|贫穷"
)
shopt -s nullglob
for file in *.epub *.mobi *.pdf *.azw3; do
matched=false
for rule in "${rules[@]}"; do
dir="${rule%%|*}"
patterns="${rule#*|}"
if echo "$file" | grep -qiE "$patterns"; then
mv -v "$file" "$dir/" && matched=true
break
fi
done
$matched || mv -v "$file" "其他/"
done分类体系
执行后形成了 10 个二级目录,118 本书全部落位:
| 二级目录 | 数量 | 覆盖主题 |
|---|---|---|
| 钱 | 46 | 赚钱、财富、变现、投资理财 |
| 创业 | 14 | 一人公司、副业、零工 |
| 思维与成长 | 25 | 思维、认知、人性、学习 |
| 文学与小说 | 10 | 十宗罪、福尔摩斯、川端康成 |
| 管理 | 5 | 管理学、商业、企业创新 |
| 写作 | 5 | 写作术、文案、写作课 |
| 历史与传记 | 4 | 史记、货殖、范蠡 |
| 营销与运营 | 3 | 营销、运营、定位 |
| 经济学 | 1 | 诺贝尔奖经济学合集 |
| 其他 | 5 | 未能匹配主题的书籍 |
Dry-Run 排错的价值
首轮 --dry-run 预览发现了 3 个分类错误,及时修正规则:
- 脚本自身被误分类 → 在 glob 前加
shopt -s nullglob,并在循环内跳过.sh文件 - 《诺贝尔奖经济学合集》因"贫穷"关键词误入"钱" → 将"贫穷"移入经济学规则
- 《思想会·财富密码》被"营销"关键词截胡 → 调整规则匹配顺序,营销类移到钱类之后
正式执行:118 个文件全部移动正确,零错误。
三、验证 OpenClaw CLI 集成
既然脚本已经搞定,干脆再试一个更有意思的东西——指挥本机正在运行的 OpenClaw 智能体干活。

环境探测
# 找到 OpenClaw 进程
ps aux | grep openclaw
# 确认 gateway 端口
ss -tlnp | grep 18789
# 列出可用 agent
openclaw agents list发现 gateway 运行在 127.0.0.1:18789,版本 v2026.7.1。agents list 列出了大量 agent,包括 main(云天雪)、chief-yuntian、kb-writer、agents-orchestrator 等。
调用验证
openclaw agent --agent main -m "请回复一句话确认你在线"
# → "在线,☁️❄️ 云天雪随时待命。"链路打通。这意味着后续可以写脚本,在电子书整理完毕后自动触发 OpenClaw agent 做知识库归档、生成读书笔记等工作流。
最终产出
/data/Book/clean_names.sh—— 文件名水印清理脚本,可反复运行(无标记文件自动跳过)/data/Book/organize_books.sh—— 主题分类脚本,规则可配置,支持 dry-run 预览- 118 本书全部清理水印并按 10 个主题目录归档完成
- OpenClaw CLI 指挥能力验证通过,可指定任意 agent 执行任务

推荐使用流程
新书入库后,按以下三步走:
新书进 /data/Book/ → clean_names.sh 清标记 → organize_books.sh 归类两个脚本都不递归处理子目录,不会动已归类书籍,可以放心反复运行。
关联阅读\n- [[OpenClaw 多智能体博客流水线 v3.0:破解 3 层 Subagent 嵌套限制的 2 层 DAG 架构演进]]\n- [[OpenClaw CLI 速查指南:从入门到精通的命令大全]]\n- [[博客流水线技术复盘:HITL 审核跳过事故的根因分析与代码门控修复]]\n- [[]]\n- [[]]\n- [[]]
- [[OpenClaw 多智能体博客流水线 v3 架构演进]]
- [[OpenClaw 命令速查]]
- [[博客流水线深度优化:从11项问题到全流程重构]]
关联阅读
- [[OpenClaw多智能体博客流水线v3架构演进]]
- [[知识库优化全过程记录]]
- [[OpenClaw博客流水线v27完整迭代]]
—## 参考来源
梦行志