2010-08-06 9 views
2

Для веб-сайта, над которым я работаю, я хочу иметь возможность автоматически обновлять раздел «Эта страница был последним изменен:» в нижнем колонтитуле, поскольку я выполняю свою ночную фиксацию git. По сути, я планирую писать сценарий оболочки, чтобы работать в полночь каждую ночь, которая будет выполнять все мое общее обслуживание сервера. Большинство из этих задач я уже знаю, как автоматизировать, но у меня есть файл (footer.php), который включен в каждую страницу и отображает дату последнего обновления сайта. Я хочу иметь возможность рекурсивно просматривать мой сайт и проверять метку времени для каждого файла, а затем, если какой-либо из них был отредактирован после даты в footer.php, я хочу обновить эту дату.Рекурсивный поиск последнего обновленного файла в UNIX

Все что мне нужно - это команда UNIX, которая будет рекурсивно проходить через мои файлы и возвращать ТОЛЬКО дату последней модификации. Мне не нужны имена файлов или какие изменения были внесены, мне просто нужно знать один день (и, надеюсь, время), что последний обновленный файл был изменен.

Я знаю, используя «ls -l» и «cut». Я мог прокручивать каждую папку, чтобы сделать это, но я надеялся на более быструю и легкую команду. Предпочтительно однолинейная командная оболочка (возможно, с параметром -R)

ответ

0

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

1

GNU найти

find /path -type -f -iname "*.php" -printf "%T+" 

смотрите страницы поиска, чтобы играть с другими -printf спецификаторов.

+0

Вероятно, возглавившей 'sort' и' head' после этого? И '% T +' является расширением GNU, поэтому может быть недоступно на машине OP. –

+0

Вам также нужно удалить - из -f. –

2

find выводит все времена доступа в формате Unix, а затем сортирует и принимает самые большие. Преобразование в любой формат даты разыскивается остается в качестве упражнения для читателя:

find /path -type f -iname "*.php" -printf "%[email protected]" | sort -n | tail -1 
+1

Команда выглядела неплохо, но когда я попробовал это, я получил: find: Аргументы к типу должны содержать только одну букву Должен ли я использовать «-type f» вместо «-type -f»? –

+0

Да, вы правы. –

Смежные вопросы