26.11 创建、复制和删除目录

大多数 Emacs Lisp 文件操作函数在作用于目录文件时会报错。例如,不能使用 delete-file 删除目录。以下是专门用于创建和删除目录的函数。

Command: make-directory dirname &optional parents

该命令创建名为 dirname 的目录。如果 parentsnil(交互式调用时始终为非 nil),表示若父目录不存在则先创建父目录。 作为函数调用时:如果 dirname 已作为目录存在且 parentsnilmake-directory 返回非 nil;如果成功创建 dirname,则返回 nilmkdir 是该函数的别名。

Command: make-empty-file filename &optional parents

该命令创建名为 filename 的空文件。 与 make-directory 类似,若 parentsnil,该命令会创建所需的父目录。 如果 filename 已存在,该命令会抛出错误。

Command: copy-directory dirname newname &optional keep-time parents copy-contents

该命令将目录 dirname 复制到 newname。如果 newname 是目录名,则 dirname 会被复制为该目录下的子目录。 See 目录名

该命令始终将复制后文件的权限模式设置为与原文件一致。

第三个参数 keep-timenil 表示保留复制文件的修改时间。使用前缀参数调用时,keep-time 会被设为非 nil

第四个参数 parents 决定是否在父目录不存在时创建它们。交互式调用时默认会创建。

第五个参数 copy-contents 若为非 nil,表示当 newname 是目录名时,直接将 dirname 的内容复制到 newname 中,而非将 dirname 作为子目录复制进去。

Command: delete-directory dirname &optional recursive trash

该命令删除名为 dirname 的目录。函数 delete-file 无法处理目录文件,必须使用 delete-directory。如果 recursivenil 且目录包含任何文件,delete-directory 会抛出错误。 如果 recursivenil,即使该目录或其文件在 delete-directory 处理前已被其他进程删除,也不会报错。

delete-directory 仅在父目录层级跟随符号链接。

如果可选参数 trashnil 且变量 delete-by-moving-to-trashnil,该命令会将文件移至系统回收站而非直接删除。 See Miscellaneous File Operations in The GNU Emacs Manual。交互式调用时:若无前缀参数,trasht;否则为 nil


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike