Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   [решено] Найти последние изменённые файлы (http://forum.oszone.net/showthread.php?t=115059)

hasherfrog 22-08-2008 11:50 881165

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

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

mar 22-08-2008 14:26 881281

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

BuGfiX 22-08-2008 15:31 881343

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

hasherfrog 22-08-2008 15:32 881345

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 рвётся труба при долгом разглядывании :]
Но зато я сразу нашёл косяк, который собственно и искал.

Решено.


Время: 14:28.

Время: 14:28.
© OSzone.net 2001-