Есть ли способ получить дату последнего изменения каталога, включая подкаталоги? либо через сценарий оболочки, либо через php?
Спасибо!
Команда Unix "stat" предоставит эту информацию, а также одноименная функция PHP.
Вот решение оболочки, которое предполагает Linux (или, в более общем смысле, GNU find). Для простоты имена файлов, содержащие символы новой строки, не поддерживаются.
find /path/to/directory -type f -printf '%T@:%p\n' |
sort -t : -k 1 -nr |
head -n 1 |
sed -e 's/^[^:]*://'
Быстрое объяснение:
• Список всех обычных файлов в дереве; для каждого файла выведите время его модификации, двоеточие и имя.
• Сортировать по убыванию ведущего числа.
• Оставьте только первую строку.
• Удалите первое число и :
.
я не уверен, что вы спрашиваете, но вы пробовали ls -la ?
или даже ... найти ./ -exec ls -lah {} \; чтобы увидеть последнюю дату всего.
(Его можно развернуть в системах * nix)
Похоже, что сценарий оболочки может усложнить ситуацию больше, чем необходимость, однако простите меня, если я не полностью понимаю вопрос.
tree будет командой, которую я бы использовал для этого
дерево синтаксиса -dfsD
Если вы хотите увидеть список всех каталогов / подкаталогов (а не каких-либо файлов) в местоположении, отсортированных (и показывающих) дату их последнего изменения, вы можете использовать следующую команду:
ls -lRt | grep ^d
Обновить: Вы можете сделать еще один шаг и ограничить вывод только датой последнего изменения и именем каталога, используя
ls -lRt | grep ^d | awk '{print $6" "$7" "$8, $9}'
Единственная проблема с любым из этих списков заключается в том, что вы не получаете полный путь к каждому каталогу, поэтому может быть сложно определить, какие каталоги являются подкаталогами.