Поиск последнего обновленного файла рекурсивно в UNIX - PullRequest
2 голосов
/ 06 августа 2010

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

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

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

Ответы [ 3 ]

2 голосов
/ 06 августа 2010

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

find /path -type f -iname "*.php" -printf "%T@" | sort -n | tail -1
1 голос
/ 06 августа 2010

GNU найти

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

проверьте страницу поиска для воспроизведения с другими спецификаторами -printf.

0 голосов
/ 06 августа 2010

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

...