emacs lisp перечисляет файлы с расширением glob

Есть ли какая-либо библиотека или функция, которая выполняет расширение bash-like glob для emacs lisp?

Например:

(directory-files-glob "~/Desktop/*")
> ("/home/user/Desktop/file1" "/home/user/Desktop/file2")

Если такой функции нет, есть ли подсказка / предложение по ее реализации?

РЕДАКТИРОВАТЬ:

Я нашел в документах также полезную функцию, которая делает совершенно точно так:

file-expand-wildcards: Эта функция расширяет шаблон шаблона подстановки, возвращая список имен файлов, которые ему соответствуют.

27
задан pygabriel 19 August 2010 в 16:34
поделиться

1 ответ

Ознакомьтесь с документацией для файлов-каталогов :

(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 (с каталогами), вероятно, есть способ получить это. Вышеупомянутое предполагает, что подстановочная часть находится в части пути, не относящейся к каталогу.

20
ответ дан 28 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: