Emacs lisp:从路径获取目录名称(而不是路径)

时间:2014-12-04 01:42:48

标签: emacs path directory cross-platform elisp

我正在寻找简单可移植方式从路径获取目录路径的最后一个组件或目录本身。函数的语义应该是这样的:

(get-dirname-nonpath "/some/dir/")  ;; should return "dir"
(get-dirname-nonpath "C:\Windows\Path") ;; should return "Path"
(get-dirname-nonpath "/some/path/to/my/source.ext")  ;; returns "my"

在最后一个例子中,如果函数返回" source.ext"而不是"我的",特别是如果这会缩短它。 看看emacs,我无法找到有助于实现这一目标的内置函数:

当然,我可以使用(后退)斜杠进行一些字符串操作,但这看起来很乱,而且更像是黑客。以强健(操作系统无关)的方式做到这一点的正确方法是什么?

编辑:到目前为止我能找到的最好的是:(file-name-nondirectory (directory-file-name ...))

1 个答案:

答案 0 :(得分:8)

(file-name-nondirectory (directory-file-name (file-name-directory ...)))

如果你想要你的第三个例子,你需要最后一部分:

(file-name-nondirectory (directory-file-name (file-name-directory "/some/path/to/my/source.ext")))

返回"my"