в терминале Linux, как мне показать дату последней модификации папки, учитывая ее содержимое? - PullRequest
58 голосов
/ 15 февраля 2011

Так вот в чем дело.Допустим, у меня есть каталог с именем "web", поэтому

$ ls -la

drwx------  4 rimmer rimmer 4096 2010-11-18 06:02 web

НО внутри этого каталога, web / php /

$ ls -la

-rw-r--r-- 1 rimmer rimmer 1957 2011-01-05 08:44 index.php

Это означает, что, хотя содержимое моего каталога,/web/php/index.php был последний раз изменен в 2011-01-05, а каталог / web / сообщается как последний измененный в 2010-11-18.

Что мне нужно сделать, это иметьДата последнего изменения моего / web / каталога указывается как дата последнего изменения любого файла / каталога внутри этого каталога, рекурсивно.

Как мне это сделать?

Ответы [ 3 ]

50 голосов
/ 15 февраля 2011

Что-то вроде:

find /path/ -type f -exec stat \{} --printf="%y\n" \; | 
     sort -n -r | 
     head -n 1

Объяснение:

  • команда find будет печатать время модификации для каждого файла, рекурсивно игнорируя каталоги (согласно комментарию IQAndreas вы не можетеполагаться на временные метки папок)
  • sort -n (численно) -r (обратный)
  • head -n 1: получить первую запись
19 голосов
/ 15 февраля 2011

Если у вас есть версия find (например, GNU find), которая поддерживает -printf, то нет необходимости повторно вызывать stat:

find /some/dir -printf "%T+\n" | sort -nr | head -n 1

или

find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1

Если вам не нужна рекурсия, то:

stat --printf="%y\n" *
6 голосов
/ 15 февраля 2011

Если бы я мог, я бы проголосовал за ответ Пауло.Я проверил это и понял концепцию.Я могу подтвердить, что это работает.Команда find может выводить много параметров.Например, добавьте следующее к предложению --printf:

%a for attributes in the octal format
%n for the file name including a complete path

Пример:

find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file

Позвольте мне также поднять этот вопрос: хочет ли автор этого вопроса решитьего проблема с использованием Bash или PHP?Это должно быть указано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...