Найти, если какие-либо файлы были недавно изменены, как можно быстрее
У меня довольно большая структура каталогов с тысячами файлов. Я хочу выяснить, изменились ли они с определенного времени. Теперь я могу использовать
find <dir> -mmin 30 -type f
... чтобы найти любые файлы, которые изменились за последние 30 минут. Тем не менее, это займет несколько секунд, и мне действительно не интересно (1) найти все файлы, которые изменились, или даже (2) найти, какие файлы изменились. Я только ищу ответ да / нет на "любые файлы изменены?".
Я могу сделать (1) лучше, используя -print -quit для остановки после того, как был найден первый файл. Однако для случая, когда файлы не были изменены, общий поиск все еще занимает некоторое время.
Мне было интересно, есть ли более быстрый способ проверить это? Каталог времени, может быть? Я использую ext4, если это имеет значение.
1 ответ
Для GNU find
вы можете использовать опцию -quit
прекратить поиск после первого матча.
Поэтому, если вы хотите узнать, если за последние 30 минут был изменен хотя бы один файл, вы можете запустить:
find . -mmin -30 -type f -print -quit
Это выведет имя первого соответствующего файла и выйдет.
Кроме того, если у вас есть контроль над программным обеспечением, которое использует вашу группу файлов, и производительность не является проблемой, вы можете добавить функцию касания файла временной метки каждый раз, когда любой файл изменяется или добавляется, и затем проверять только статистику этого файла временной метки.