Эффективный способ получить последние измененные / созданные файлы

У меня есть папка с большим количеством файлов (различные журналы, сгенерированные на веб-сайте).

Умело рассчитывать их с помощью:

$ find . -maxdepth 1|wc -l
803313

Теперь мне нужно проверить журналы в последние несколько дней. Получение последних 100/1000 / ... файлов так же хорошо. Проблема в том, что приведенная выше команда заняла около 5 секунд. Таким образом, у почти 1 миллиона файлов мой обычный ls -lrt|tail -n 100 не является вариантом.

Итак, любые идеи о том, как эффективно получать последние измененные файлы?

PS: Использование Ubuntu 12.04 LTS

1
задан 25 September 2014 в 16:54

1 ответ

Вы можете использовать printf для печати даты, %T@ дает время модификации, как временная метка unix:

find . -type f -printf "%T@ %p\n" | sort -rn | head -n 10

В папке с 250 000 файлами требуется 10 секунд.

Sidenote: для быстрого поиска самого последнего файла вы можете использовать

find . -type f -printf "%T@\0%p\0" | gawk ' { if ($0>max) { max=$0; getline mostrecent } else getline } END{print mostrecent}' RS='\0'

. Это занимает менее 2 секунд на 250 000 файлов.

4
ответ дан 24 May 2018 в 03:24

Другие вопросы по тегам:

Похожие вопросы: