Есть ли общий термин для элементов в каталоге?

Мне просто любопытно, есть ли стандартный компьютерный термин, который охватывает все в каталоге, вместо того, чтобы всегда упоминать "файлы" и "(под) каталоги / папки" отдельно. Таким образом, вы можете сказать, пройти через все termв dir_1,

Изменить: Просто чтобы прояснить, я ищу единичный термин, как в моем примере предложения.

6 ответов

Решение

POSIX readdir документация использует слово ввода:

Функция readdir() должна возвращать указатель на структуру, представляющую запись каталога в текущей позиции в потоке каталога, заданном аргументом dirp, и помещать поток каталога в следующую запись. Он должен возвращать нулевой указатель при достижении конца потока каталога. Структура dirent, определенная в заголовке , описывает запись каталога.

Файл. По крайней мере, в POSIX-совместимых системах.

3.164 Файл

Объект, который может быть записан или прочитан, или и то, и другое. Файл имеет определенные атрибуты, включая права доступа и тип. Типы файлов включают обычный файл, специальный символьный файл, специальный файл блока, специальный файл FIFO, символьную ссылку, сокет и каталог. Другие типы файлов могут поддерживаться реализацией.

( источник)

Люди, которые говорят "файлы", когда имеют в виду только "обычные файлы", на самом деле не POSIX-совместимы.:)

Вы можете узнать, что такое POSIX, из ответов на этот вопрос. Различные операционные системы совместимы с POSIX (полностью или в основном) или нет. Не вдаваясь в подробности, этот ответ относится к Unix и Unix-подобным системам (включая macOS, Linux, BSD), но не к семейству Windows в целом.

Хороший вопрос.

Я использую "содержимое" как термин, который охватывает как файлы, так и подпапки.

Например: "Нам нужно скопировать все содержимое этого каталога".

Есть хорошие ответы, которые предлагают файлы и записи. (Прочтите их, если вы не понимаете, почему эти слова подходят, и помните, что в POSIX "файл" включает в себя все типы inode (включая каталог), а не только обычные файлы). Записи каталога (имена файлов) являются ссылками на файлы / иноды.

Файл может иметь несколько имен в разных каталогах (количество ссылок> 1). Фактический файл data/inode не сохраняется в каталоге, содержащем для него имя файла.

Но здравомыслящие люди без проблем говорят такие вещи, как "прочитать файл, который находится в каком-то каталоге". Было бы излишне педантично беспокоиться о том, чтобы всегда делать различие между файлом (inode + data) и записями имени файла (ов) / каталога, которые к нему относятся.

Также обратите внимание, что записи каталога в современных файловых системах часто также содержат поле типа, поэтому такие программы, как find не нужно stat(2) каждый файл для проверки предикатов, таких как find -type f (обычный файл) или символическая ссылка или что-то. Или найти записи, которые сами являются каталогами при повторении. См. Проверка наличия директ. запись, возвращаемая readdir, является каталогом, ссылкой или файлом. dent-> d_type не показывает тип в переполнении стека.


Как путь foo/barили же/a/b/foo/barэто строка, которая заканчивается именем файла, но может использовать каталоги для ссылки на имя файла, которого нет в текущем каталоге.foo это простой путь, а также имя файла. Но foo/bar это имя файла, а также путь. Но вы можете утверждать, что это не "имя файла". Путь или имя пути - это то, что вы можете передать системному вызову, например, POSIX open(2)или жеchdir(2)или Win32OpenFile()


Ваш выбор терминологии (файл против имени файла против записи каталога), вероятно, будет зависеть от контекста и того, что вы делаете. например, чтение содержимого или метаданных inode включает в себя фактический файл.

Но просто сопоставление выражения glob с именем вообще не затрагивает файл, только запись имени файла / каталога.

Запись в каталоге является наиболее подходящей, когда на самом деле зацикливается на такой функции, как readdir(3)или, например, "использовать ln "создать новую запись каталога, ссылающуюся на этот файл". При работе с жесткими ссылками термин "dir entry" полезен в отличие от файла, более того, чем "filename".

Но "имя" тоже работает. например, "файл с 2 именами".

Чаще вы пишете сценарий оболочки, используя имена переменных, такие как c_files=( *.c ), Или же fn (для имени файла) также является хорошим именем локальной переменной.

С помощью entries=( *.c ) будет странно "Записи" чувствуют себя хорошо только тогда, когда говорят о процессе их циклического получения для получения имен файлов, а не для результирующего набора имен файлов, которые соответствуют какому-либо фильтру.

Почему бы не поднять уровень абстракции вместо использования только "компьютерных терминов":
Шаг до более общей формулировки...

Зрелая файловая система хранит content,

Это позволяет "файлы" и "папки" в качестве основного содержимого.
Чаще всего "папка" может хранить подуровни контента...

В зависимости от выбора файловой системы могут быть другие типы контента.

Мне нравится термин « дерево» , и действительно, в Linux есть команда, которая выводит список всего в текущем каталоге и всех каталогах ниже, а также их файлах и подкаталогах.

Вот пример установки и использованияtreeкоманда. Пример по ссылке:

Хотя скриншоты терминалов обычно не одобряются, поскольку предпочтение отдается копированию и вставке чистого текста, я думаю, что нарушение в этом случае, вероятно, будет прощено большинством читателей.

Другие вопросы по тегам