7

Когда я запускаю ls -l в оболочке Bash, в нем указывается время модификации файлов и каталогов. Как отмечено в этой теме, время модификации для каталогов не отражает все его содержимое. Это также, кажется, не затронуто изменением имени каталога. Что именно отражает время модификации каталога?

Это самое последнее время изменения файла (или каталога) в верхнем уровне каталога?

2 ответа2

9

Обратите внимание, что в Unix каталог не "содержит" файлы в нем. Скорее, он содержит ссылки на них. Смотрите link(2) системный вызов для получения дополнительной информации.

Это означает, что "прямое" содержимое каталога представляет собой список имен файлов и соответствующих им i-номеров. Таким образом, дата изменения каталога указывает, когда этот список изменялся. Операции, которые могут вызвать такие изменения, будут включать, но не обязательно, следующее:

  • Создание нового файла в каталоге
  • Удаление (или, вернее, unlink(2) ing) файла из каталога
  • Переименование файла в каталоге
  • Жесткая ссылка на файл в другом месте в каталоге
3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .