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

eol*_*old 2 directory emacs elisp cross-platform path

我要寻找一个简单的便携式获得的目录路径,或从路径目录本身的最后一个组件的方式.函数的语义应该是这样的:

(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"
Run Code Online (Sandbox Code Playgroud)

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

当然,我可以使用(后退)斜杠进行一些字符串操作,但这看起来很混乱,更像是一个黑客.以强健(OS-oblivious)方式执行此操作的正确方法是什么?

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

Dre*_*rew 9

(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".