2014-12-04 53 views
2

我找得到的目录路径,或从路径目录本身的最后一个组件的简单便携式方式获取目录名(而不是路径)。该功能的语义应该是这样的:的Emacs Lisp:从路径

(get-dirname-nonpath "/some/dir/") ;; should return "dir" 
(get-dirname-nonpaht "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 ...))

回答

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"