(file-name-as-directory dir)
вернет путь к каталогу dir
с завершающей косой чертой, добавив один, если необходимо, а не иначе.
Если бы у вас была последовательность частичных путей в списке, вы могли бы сделать что-то вроде:
(let ((directory-list '("/foo" "bar/" "p/q/" "x/y"))
(file-name "some_file.el"))
(concat
(mapconcat 'file-name-as-directory directory-list "")
file-name))
"/foo/bar/p/q/x/y/some_file.el"
или в качестве альтернативы, если вы хотите включить имя файла в список, вы можете использовать directory-file-name
, что противоположно file-name-as-directory
:
(let ((path-list '("/foo" "bar/" "p/q/" "x/y/some_file.el")))
(mapconcat 'directory-file-name path-list "/"))
"/foo/bar/p/q/x/y/some_file.el"
(Кто-то, пожалуйста, исправьте меня, если использование directory-file-name
на не-директории не является переносимым?)