Есть ли какая-либо библиотека или функция, которая выполняет расширение bash-like glob для emacs lisp?
Например:
(directory-files-glob "~/Desktop/*")
> ("/home/user/Desktop/file1" "/home/user/Desktop/file2")
Если такой функции нет, есть ли подсказка / предложение по ее реализации?
РЕДАКТИРОВАТЬ:
Я нашел в документах также полезную функцию, которая делает совершенно точно так:
file-expand-wildcards: Эта функция расширяет шаблон шаблона подстановки, возвращая список имен файлов, которые ему соответствуют.
Ознакомьтесь с документацией для файлов-каталогов
:
(directory-files "~/Desktop" nil ".")
Примечание: Третий аргумент - это регулярное выражение, а не подстановка.
Шаблоны подстановки легко превратить в регулярные выражения. eshell поставляется с пакетом перевода, который вы можете использовать:
(require 'em-glob)
(defun directory-files-glob (path)
(directory-files (file-name-directory path)
nil
(eshell-glob-regexp (file-name-nondirectory path))))
И, если вы хотите получить полный доступ к глобализации eshell (с каталогами), вероятно, есть способ получить это. Вышеупомянутое предполагает, что подстановочная часть находится в части пути, не относящейся к каталогу.