PDA

Показать полную графическую версию : [решено] Найти последние изменённые файлы


hasherfrog
22-08-2008, 11:50
Иногда в большой куче файлов с поддиректориями(!) нужно найти пару файлов, которые были недавно изменены (как правило, самые последние модификации). Например, кто-то копался в /etc/ и что-то там поменял. Что -- непонятно, но нормально работать перестало :] Надо найти что именно изменено, но как бы побыстрее это сделать?..

Нет ни у кого скрипта для таких целей? По идее, скрипт должен собрать все данные об изменениях всех файлов через lstat, и отсортировать sort'ом. Но файлов может быть много, получится долго... Потом, хотелось бы иметь регулируемые параметры типа "выводить только N последних", проверять только файлы определённого вида и т.п. Может, уже утилита есть, типа find, просто я нужного заклинания не знаю?

mar
22-08-2008, 14:26
первое, что приходит в голову из готового, это скрипты a-la daily : какой-то из них, помнится, проверяет изменения в существенных файлах

BuGfiX
22-08-2008, 15:31
Команда 'find -mtime x' позволяет искать файлы которые изменялись x+1 сутки назад, возможно это как-то Вам поможет.

hasherfrog
22-08-2008, 15:32
BuGfiX
Спасибо, но... Нет, как раз непонятно, когда были сделаны изменения.

mar, спасибо, я просто думал, может есть что-то уже. Типа ls -ctl но с поддержкой -R
В общем, ладно, я тут набросал на коленке для себя... Думает долго, но работает. Больше мне пока не надо.
#!/bin/bash

find ./ -type f -print |
while read f; do stat --format="%Y %n" ${f}; done |
sort -r -n |
while read n f; do ls -al ${f}; done |
more


update
Хм, видимо, из-за использования more рвётся труба при долгом разглядывании :]
Но зато я сразу нашёл косяк, который собственно и искал.

Решено.




© OSzone.net 2001-2012