File Commander

unlisted

by lizhifeng

Batch file operations - select, delete, move, tag, rename images, find broken links and orphan notes.

Updated 1mo agoMIT
View on GitHub

File Commander

一个强大的 Obsidian 批量文件管理插件,支持批量选择、删除、移动文件,以及迁移未完成任务。

功能特性

  • ✅ 批量选择文件(全选/取消全选)
  • ✅ 批量删除文件
  • ✅ 批量移动文件到指定文件夹
  • ✅ 批量打标签(支持添加到文件开头、末尾或 frontmatter)
  • ✅ 批量替换标签(支持关键词重命名)
  • ✅ 批量重命名 frontmatter 元数据属性
  • 图片重命名(文件名-001):将选中笔记内嵌入的图片按出现顺序重命名为 笔记名-001笔记名-002
  • 图片转相对路径:将图片链接转换为相对路径,兼容 Typora 等编辑器
  • 图片转最简路径:将图片链接转换为仅文件名的最简路径
  • ✅ 按文件夹筛选文件
  • ✅ 按标签筛选文件
  • ✅ 查找失效图片链接(支持 URL 编码路径,如 %20 不会误判)
  • 查找未引用图片:找出 assets 等配置文件夹下未被任何笔记引用的图片
  • ✅ 查找无标签笔记
  • ✅ 查找孤立笔记(无入链和出链)
  • ✅ 查找空文件
  • ✅ 显示选中文件数量统计
  • ✅ 右键菜单快速操作
  • ✅ 点击文件名快速打开
  • ✅ 文件列表按路径排序

安装方法

方式一:从 GitHub Release 安装(推荐)

  1. 前往 Releases 页面下载最新版本
  2. 下载以下文件:
    • main.js
    • manifest.json
    • styles.css
  3. 在你的 Obsidian 库中创建插件目录:.obsidian/plugins/file-commander/
  4. 将下载的文件复制到该目录
  5. 重启 Obsidian 或刷新插件列表
  6. 在设置中启用"File Commander"插件

方式二:手动安装

cd /path/to/your/vault/.obsidian/plugins
git clone https://github.com/你的用户名/file-commander.git
cd file-commander
npm install
npm run build

使用方法

批量文件管理

  1. 点击左侧边栏的文件图标,或使用命令面板搜索 "打开批量文件管理器"
  2. 在右侧面板中会显示所有 Markdown 文件
  3. 勾选要操作的文件
  4. 使用工具栏按钮进行批量操作:
    • 全选: 选中所有文件
    • 取消全选: 取消所有选中
    • 批量打标签: 为选中的文件添加标签
    • 批量替换标签: 将选中文件中的旧标签替换为新标签
    • 重命名元数据属性: 批量修改 frontmatter 中的属性名(例如将 category 改为 type
    • 删除选中: 批量删除选中的文件(不可撤销)
    • 移动选中: 批量移动文件到指定文件夹
    • 图片重命名(文件名-001): 将选中笔记内的嵌入图片按顺序重命名为 笔记名-001笔记名-002 等,并更新库内所有引用
    • 图片转相对路径: 将 ![](image.png) 转换为 ![](../assets/image.png) 相对路径格式,兼容 Typora
    • 图片转最简路径: 将 ![](../assets/image.png) 转换为 ![](image.png) 最简路径格式
    • 查找失效图片: 查找包含失效图片链接的笔记(支持 URL 编码的图片路径,如 60.Java%20中能创建%20volatile数组吗-001.png
    • 查找未引用图片: 找出「图片文件夹」配置(如 assets)下未被任何笔记引用的图片,便于清理
    • 查找无标签笔记: 查找没有任何标签的笔记
    • 查找孤立笔记: 查找既没有入链也没有出链的笔记
    • 查找空文件: 查找空白或只有 frontmatter 的文件
    • 按标签筛选: 按一个或多个标签筛选文件
    • 按文件夹筛选: 只显示指定文件夹中的文件
    • 刷新: 重新加载文件列表

批量重命名元数据属性

这是一个强大的功能,可以批量修改 markdown 文件 frontmatter 中的属性名:

  1. 选择要修改的文件
  2. 点击"重命名元数据属性"按钮
  3. 输入旧属性名(例如:category
  4. 输入新属性名(例如:type
  5. 点击确定

插件会自动:

  • 检查每个文件是否有 frontmatter
  • 查找指定的旧属性名
  • 保留原有的格式和缩进
  • 将属性名替换为新名称
  • 保持属性值不变

示例:

修改前:

---
category: 餐饮
status: active
---

修改后:

---
type: 餐饮
status: active
---

图片重命名(文件名-001)

将选中笔记内嵌入的图片按出现顺序重命名为「笔记名-001」「笔记名-002」等格式,并自动更新库内所有引用。

  1. 在批量文件管理视图中勾选要处理的笔记(.md),可多选
  2. 点击「图片重命名(文件名-001)」按钮
  3. 插件会按笔记内图片出现顺序依次重命名为 笔记名-001.扩展名笔记名-002.扩展名
  4. 若同文件夹下已有该命名,会自动使用下一个可用编号
  5. 重命名后会更新整个库中所有指向该图片的链接(wiki 链接与 Markdown 图片链接)

说明: 仅处理笔记中通过 ![[...]]![](...) 引用的图片,扩展名以插件设置中的「图片扩展名」为准。

图片路径风格切换

Obsidian 支持最简路径(仅文件名),但 Typora 等编辑器需要相对路径才能正确显示图片。

图片转相对路径:

  • ![](image.png) 转换为 ![](../assets/image.png) 格式
  • ![[image.png]] 转换为 ![](../assets/image.png) 格式
  • 自动计算笔记到图片的相对路径
  • 兼容 Typora、VSCode 等 Markdown 编辑器

图片转最简路径:

  • ![](../assets/image.png) 转换为 ![](image.png) 格式
  • Obsidian 会自动在配置的图片文件夹中查找
  • 链接更简洁,便于阅读

查找未引用图片

在「图片文件夹」设置(如 assets)下,找出没有被任何笔记引用的图片文件,方便清理无用附件。

  1. 在设置中配置好「图片文件夹」(多个用逗号分隔,如 assets,attachments
  2. 点击「查找未引用图片」按钮
  3. 列表会显示这些文件夹下所有未被 ![[...]][[...]] 引用的图片
  4. 可对结果进行删除、移动等批量操作

说明: 只扫描配置的图片文件夹及其子文件夹,扩展名以「图片扩展名」为准。

标签管理

批量打标签:

  • 支持添加到文件开头、末尾或 frontmatter(可在设置中配置)
  • 多个标签用空格分隔,例如:#todo #important

批量替换标签:

  • 支持关键词重命名,例如将 #cy 替换为 #餐饮
  • 标签可以带或不带 # 符号

筛选功能

按标签筛选:

  • 支持多标签筛选(OR 关系)
  • 显示包含任意选中标签的文件
  • 可搜索标签

按文件夹筛选:

  • 选择特定文件夹查看其中的笔记
  • 支持搜索文件夹
  • 可与标签筛选组合使用

快捷操作

  • 点击文件名:打开文件
  • 右键文件:显示快捷菜单(打开、删除)
  • 勾选复选框:选择/取消选择文件

设置选项

在插件设置中可以配置:

标签设置:

  • 默认标签:批量打标签时的默认值
  • 标签位置:选择标签添加到文件开头、末尾或 frontmatter

图片扫描设置:

  • 扫描外部图片:是否检查外部链接(http/https)的图片
  • 图片扩展名:要扫描的图片文件扩展名(也用于「图片重命名」和「查找失效图片」)
  • 图片文件夹:图片存储的文件夹路径

注意事项

  • 删除操作不可撤销,请谨慎使用
  • 移动文件时会自动创建目标文件夹
  • 如果目标位置已存在同名文件,移动操作会失败
  • 重命名元数据属性时,只会修改 frontmatter 中的属性名,不会修改属性值
  • 批量操作前建议先备份重要文件
  • 查找失效图片时,支持 URL 编码的图片路径(如 %20 表示空格),不会将有效图片误判为失效

开发

# 开发模式
npm run dev

# 构建
npm run build

# 部署到本地vault
npm run deploy

# 发布到GitHub
npm run release

技术栈

  • TypeScript
  • Obsidian API
  • esbuild

许可证

MIT


☕ 请作者喝杯咖啡

如果这个插件帮助了你,欢迎扫码打赏,感谢支持!

微信打赏

微信扫码打赏

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.