能否通过org-attach对话框将目录复制到附件目录?
报错原因
默认绑定到C-c C-a c的org-attach-copy命令原生仅支持单文件复制,未实现目录递归复制逻辑,因此操作文件夹时会直接返回File is a directory的错误提示。
解决方案
方法1:自定义扩展命令支持目录复制
将以下代码加入Emacs配置文件,替换原有org-attach-copy的逻辑即可支持目录递归复制:
(defun org-attach-copy (file) "Copy FILE to the attachment directory of the current entry. Supports copying directories recursively." (interactive "fCopy file or directory to attachment: ") (let ((target (expand-file-name (file-name-nondirectory file) (org-attach-dir t)))) (if (file-directory-p file) (copy-directory file target t t t) (copy-file file target t)) (org-attach-sync) (message "Copied %s to attachment directory" file)))
配置生效后再使用C-c C-a c选择目录即可正常完成复制。
方法2:使用内置操作流程(无需修改配置)
如果不想调整默认配置,可以通过org附件的原生操作组合实现目录添加:
- 按
C-c C-a o打开当前条目对应的附件目录 - 手动将目标文件夹移动/复制到该目录下
- 按
C-c C-a s执行附件元信息同步,新加入的文件夹就会被纳入org附件的管理体系
org附件库针对文件夹的常用便捷功能
- 绑定已有目录为附件:执行
C-c C-a a后选择目标目录,即可直接完成附件绑定,无需手动迁移文件 - 批量管理附件目录内容:调用
org-attach-dired命令可以直接在dired缓冲区打开附件目录,支持所有dired的批量编辑、移动、重命名操作,操作完成后同步元信息即可生效 - 目录归档压缩:执行
C-c C-a x可以将整个附件目录打包压缩后归档,降低存储空间占用
内容的提问来源于stack exchange,提问作者flipflop
相关产品推荐
相关产品推荐

