# File Commander 一个强大的 Obsidian 批量文件管理插件,支持批量选择、删除、移动文件,以及迁移未完成任务。 ## 功能特性 - ✅ 批量选择文件(全选/取消全选) - ✅ 批量删除文件 - ✅ 批量移动文件到指定文件夹 - ✅ 批量打标签(支持添加到文件开头、末尾或 frontmatter) - ✅ 批量替换标签(支持关键词重命名) - ✅ 批量重命名 frontmatter 元数据属性 - ✅ **图片重命名(文件名-001)**:将选中笔记内嵌入的图片按出现顺序重命名为 `笔记名-001`、`笔记名-002` 等 - ✅ **图片转相对路径**:将图片链接转换为相对路径,兼容 Typora 等编辑器 - ✅ **图片转最简路径**:将图片链接转换为仅文件名的最简路径 - ✅ 按文件夹筛选文件 - ✅ 按标签筛选文件 - ✅ 查找失效图片链接(支持 URL 编码路径,如 `%20` 不会误判) - ✅ **查找未引用图片**:找出 assets 等配置文件夹下未被任何笔记引用的图片 - ✅ 查找无标签笔记 - ✅ 查找孤立笔记(无入链和出链) - ✅ 查找空文件 - ✅ 显示选中文件数量统计 - ✅ 右键菜单快速操作 - ✅ 点击文件名快速打开 - ✅ 文件列表按路径排序 ## 安装方法 ### 方式一:Obsidian 社区市场安装(推荐) 打开 Obsidian 设置 → 第三方插件 → 浏览,搜索 **File Commander** 或 **fengshuzi** 即可安装。 ### 方式二:从 GitHub Release 安装(推荐) 1. 前往 [Releases](../../releases) 页面下载最新版本 2. 下载以下文件: - `main.js` - `manifest.json` - `styles.css` 3. 在你的 Obsidian 库中创建插件目录:`.obsidian/plugins/file-commander/` 4. 将下载的文件复制到该目录 5. 重启 Obsidian 或刷新插件列表 6. 在设置中启用"File Commander"插件 ### 方式三:手动安装 ```bash 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 - 查找指定的旧属性名 - 保留原有的格式和缩进 - 将属性名替换为新名称 - 保持属性值不变 **示例:** 修改前: ```yaml --- category: 餐饮 status: active --- ``` 修改后: ```yaml --- 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` 表示空格),不会将有效图片误判为失效 ## 开发 ```bash # 开发模式 npm run dev # 构建 npm run build # 部署到本地vault npm run deploy # 发布到GitHub npm run release ``` ## 技术栈 - TypeScript - Obsidian API - esbuild ## 许可证 MIT --- ## ☕ 请作者喝杯咖啡 如果这个插件帮助了你,欢迎扫码打赏,感谢支持!
微信打赏

微信扫码打赏