в терминале linux, как мне показать дату последней модификации папки, учитывая ее содержимое?

<p>итак, вот сделка. допустим, у меня есть каталог с именем "веб", поэтому</p><pre><code>$ 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 </code></pre><p>это означает, что, хотя содержимое моего каталога /web/php/index.php последний раз изменялось в 2011-01-05, сам каталог/web/сообщается как последний измененный в 2010-11-18.</p><p>что мне нужно сделать, так это чтобы дата последнего изменения моего каталога/web/отображалась как самая последняя дата изменения любого файла/каталога внутри этого каталога, рекурсивно.</p><p>как мне это сделать?</p>

<p>что-то вроде:</p><pre><code>find /path/ -type f -exec stat \{} --printf="%y\n" \; | sort -n -r | head -n 1 </code></pre><p>объяснение:</p><ul> <li>команда find будет печатать время модификации для каждого файла, рекурсивно игнорируя каталоги (согласно комментарию iqandreas, вы не можете полагаться на временные метки папок)</li> <li>сортировать -n (численно) -r (обратный)</li> <li>голова -n 1: получить первую запись</li> </ul>

<p>если у вас есть версия <code>find</code> (например, gnu <code>find</code>), которая поддерживает <code>-printf</code>, то нет необходимости повторно вызывать <code>stat</code>:</p><pre><code>find /some/dir -printf "%t+\n" | sort -nr | head -n 1 </code></pre><p>или же</p><pre><code>find /some/dir -printf "%ty-%tm-%td %tt\n" | sort -nr | head -n 1 </code></pre><p>если вам не нужна рекурсия, хотя:</p><pre><code>stat --printf="%y\n" * </code></pre>

<p>если бы я мог, я бы проголосовал за ответ пауло. я проверил это и понял концепцию. я могу подтвердить, что это работает. команда <code>find</code> может выводить много параметров. например, добавьте следующее к предложению <code>--printf</code>:</p><pre><code>%a for attributes in the octal format %n for the file name including a complete path </code></pre><p>пример:</p><pre><code>find desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1 2011-02-14 22:57:39.000000000 +0100 desktop/new file </code></pre><p>позвольте мне также поднять этот вопрос: хочет ли автор этого вопроса решить свою проблему, используя bash или php? это должно быть указано.</p>