目录

批量整理电子书库: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).epub

z-library.sk1lib.skz-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 预览,再实操。


二、按主题自动归类

需求澄清

这里有个容易理解错的地方:不是按书名建目录(一本书一个目录毫无意义),而是按主题建二级目录,把相关书籍归类进去。

分类体系流程图,10 个二级目录及其对应书籍数量,展示从原始平铺目录到主题分类目录的转换过程

方案: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 个分类错误,及时修正规则:

  1. 脚本自身被误分类 → 在 glob 前加 shopt -s nullglob,并在循环内跳过 .sh 文件
  2. 《诺贝尔奖经济学合集》因"贫穷"关键词误入"钱" → 将"贫穷"移入经济学规则
  3. 《思想会·财富密码》被"营销"关键词截胡 → 调整规则匹配顺序,营销类移到钱类之后

正式执行:118 个文件全部移动正确,零错误。


三、验证 OpenClaw CLI 集成

既然脚本已经搞定,干脆再试一个更有意思的东西——指挥本机正在运行的 OpenClaw 智能体干活。

OpenClaw CLI 命令执行截图,展示从探测 gateway 端口到成功调用 agent 回复的完整链路

环境探测

# 找到 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-yuntiankb-writeragents-orchestrator 等。

调用验证

openclaw agent --agent main -m "请回复一句话确认你在线"
# → "在线,☁️❄️ 云天雪随时待命。"

链路打通。这意味着后续可以写脚本,在电子书整理完毕后自动触发 OpenClaw agent 做知识库归档、生成读书笔记等工作流。


最终产出

  1. /data/Book/clean_names.sh —— 文件名水印清理脚本,可反复运行(无标记文件自动跳过)
  2. /data/Book/organize_books.sh —— 主题分类脚本,规则可配置,支持 dry-run 预览
  3. 118 本书全部清理水印并按 10 个主题目录归档完成
  4. OpenClaw CLI 指挥能力验证通过,可指定任意 agent 执行任务
最终目录结构树形图,展示 10 个主题分类目录及其内部文件,体现整理后的整洁结构

推荐使用流程

新书入库后,按以下三步走:

新书进 /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完整迭代]]

—## 参考来源