Spec-Zone.ru › Elisp

Содержание директорий

Директория — это вид файла, содержащий другие файлы, введенные под разными именами. Директории — это функция файловой системы.

Emacs может вывести имена файлов в директории в виде списка Lisp или отобразить имена в буфере, используя команду оболочки ls. В последнем случае он может дополнительно отобразить информацию о каждом файле, в зависимости от опций, переданных команде ls.

Функция: directory-files directory &optional full-name match-regexp nosort count

Эта функция возвращает список имен файлов в директории directory. По умолчанию, список отсортирован по алфавиту.

Если full-name не nil, функция возвращает абсолютные имена файлов. В противном случае, возвращает имена, относительные к заданной директории.

Если match-regexp не nil, эта функция возвращает только те имена файлов, чья не-директорийная часть содержит совпадение с регулярным выражением — остальные имена файлов исключаются из списка. При работе с файловыми системами, нечувствительными к регистру, сопоставление с регулярным выражением также нечувствительно к регистру.

Если nosort не nil, directory-files не сортирует список, поэтому вы получите имена файлов в произвольном порядке. Используйте это, если вам нужна максимальная скорость, и порядок обработки файлов не важен. Если порядок обработки виден пользователю, то, скорее всего, пользователь будет рад, если вы отсортируете имена.

Если count не nil, функция вернёт имена первых count файлов или имена всех файлов, в зависимости от того, что произойдёт раньше. count должен быть целым числом, большим нуля.

(directory-files "~lewis")
     ⇒ ("#foo#" "#foo.el#" "." ".."
         "dired-mods.el" "files.texi"
         "files.texi.~1~")

Ошибка сигнализируется, если directory не является именем читаемой директории.

Функция: directory-empty-p directory

Эта служебная функция возвращает t, если заданная directory является доступной директорией и не содержит файлов, т.е. является пустой директорией. Она будет игнорировать «.» и «..» на системах, которые возвращают их как файлы в директории.

Символические ссылки на директории считаются директориями. Используйте file-symlink-p для различения символических ссылок.

Функция: directory-files-recursively directory regexp &optional include-directories predicate follow-symlinks

Возвращает все файлы в directory, имена которых соответствуют regexp. Эта функция рекурсивно ищет в заданной directory и ее поддиректориях файлы, имена базовых частей (т.е. без ведущих директорий) которых соответствуют заданному regexp, и возвращает список абсолютных имен соответствующих файлов (см. абсолютные имена файлов). Имена файлов возвращаются в порядке обхода в глубину, то есть файлы в некоторых поддиректориях возвращаются до файлов в родительской директории. Кроме того, соответствующие файлы, найденные в каждой поддиректории, сортируются по алфавиту по своим базовым именам. По умолчанию, директории, имена которых соответствуют regexp, исключаются из списка, но если необязательный аргумент include-directories не nil, они включаются.

По умолчанию, все поддиректории посещаются. Если predicate является t, ошибки при попытке перехода в поддиректорию (например, если она недоступна для текущего пользователя) игнорируются. Если это ни nil, ни t, это должна быть функция, которая принимает один параметр (имя поддиректории) и должна возвращать не-nil, если директория должна быть посещена.

Символические ссылки на поддиректории по умолчанию не следуют, но если follow-symlinks не nil, они следуют.

Функция: locate-dominating-file file name

Начиная с file, поднимаясь по иерархии директорий, ища первую директорию, в которой существует name (строка), и возвращая эту директорию. Если file является файлом, его директория будет использоваться в качестве начальной точки поиска; в противном случае file должен быть директорией, с которой начинается поиск. Функция ищет в исходной директории, затем в ее родительской, затем в родительской родительской и т.д., пока не найдет директорию с name или не достигнет корневой директории файловой системы без нахождения name — в последнем случае функция возвращает nil.

Аргумент name также может быть предикатной функцией. Предикат вызывается для каждой проверяемой директории, начиная с file (даже если file не является директорией). Он вызывается с одним аргументом (файл или директория) и должен возвращать не-nil, если эта директория и есть та, которую ищут.

Функция: directory-files-and-attributes directory &optional full-name match-regexp nosort id-format count

Это аналогично directory-files в определении файлов, которые нужно сообщать, и как сообщать их имена. Однако вместо возвращения списка имен файлов, он возвращает для каждого файла список (filename . attributes), где attributes — то, что file-attributes возвращает для этого файла. Необязательный аргумент id-format имеет то же значение, что и соответствующий аргумент функции file-attributes (см. Описание file-attributes).

Константа: directory-files-no-dot-files-regexp

Это регулярное выражение соответствует любому имени файла, кроме «.» и «..». Точнее, оно соответствует частям любой непустой строки, кроме этих двух. Это полезно в качестве аргумента match-regexp для directory-files и directory-files-and-attributes:

(directory-files "/foo" nil directory-files-no-dot-files-regexp)

возвращает nil, если директория «/foo» пуста.

Функция: file-expand-wildcards pattern &optional full

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

Если pattern записан как абсолютный путь к файлу, значения также являются абсолютными.

Если pattern записан как относительный путь к файлу, он интерпретируется относительно текущей стандартной директории. Возвращаемые имена файлов обычно также относительны к текущей стандартной директории. Однако, если full не nil, они являются абсолютными.

Функция: insert-directory file switches &optional wildcard full-directory-p

Эта функция вставляет (в текущий буфер) список директорий для директории file, отформатированный с ls в соответствии с switches. Она оставляет точку после вставленного текста. switches может быть строкой опций или списком строк, представляющих отдельные опции.

Аргумент file может быть либо директорией, либо спецификацией файла, включающей символы подстановки. Если wildcard не nil, это означает, что file рассматривается как спецификация файла с подстановкой.

Если full-directory-p не nil, это означает, что ожидается, что список директорий будет показывать полное содержимое директории. Вы должны указать t когда file является директорией, а переключатели не содержат «-d». (Опция «-d» для ls означает описание самой директории как файла, а не показ ее содержимого.)

На большинстве систем эта функция работает, запуская программу отображения директорий, имя которой находится в переменной insert-directory-program. Если wildcard не nil, она также запускает оболочку, указанную в shell-file-name, для расширения подстановок.

Системы MS-DOS и MS-Windows обычно не имеют стандартной программы Unix ls, поэтому эта функция эмулирует стандартную программу Unix ls с помощью кода Lisp.

В качестве технической детали, когда switches содержит длинную опцию «--dired», insert-directory обрабатывает ее особым образом для dired. Однако, обычно эквивалентная короткая опция «-D» просто передается insert-directory-program, как любая другая опция.

Переменная: insert-directory-program

Значение этой переменной — программа для запуска, чтобы сгенерировать список директорий для функции insert-directory. Она игнорируется на системах, генерирующих список с кодом Lisp.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Contents-of-Directories.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API