Intereting Posts
Изменение разрешений для файлов в Linux Сценарий с использованием пользовательского ввода для расчета старой даты Создание подписанного подчиненного ЦС для клиентских сертификатов Thunderbird / Enigmail: проблема с цветами Поддерживает ли интерфейс интерпретатора командной строки драйверы ядра / устройства так же, как и обычная GUI-программа? Нет такого файла или каталога для файлов с акцентированными символами Что означает «указать несколько шаблонов поиска» на `-e` в grep? Есть ли достойная альтернатива для Launchy? Почему bash не расширяет эту переменную, если я префикс команды с назначением одноразовой переменной Как дублировать последовательный терминал? Как установить Python 3.6? Пользовательский шасси Jog Control Linux Mint Игнорируйте эту переменную строку так, чтобы она не выводила Использовать подключенное устройство в качестве источника снимка Почему ctrl + d не работает с этим?

Как просмотреть файлы, которые были изменены в определенный диапазон времени?

Как я могу перечислить рекурсивно все файлы, которые были изменены с 22.12.2011 по 24.12.2011?

    Вообще говоря, когда вы ищете файлы в каталоге и его подкаталоги рекурсивно, используйте find .

    Самый простой способ указать диапазон дат с помощью find – создать файлы на границах диапазона и использовать предикат -newer .

     touch -t 201112220000 start touch -t 201112240000 stop find . -newer start \! -newer stop 

    Используя решение Жиля и после прочтения этого человека (1) снова я нашел более простое решение. Лучшим вариантом является -newerXY. Могут использоваться флаги m и t.

     m The modification time of the file reference t reference is interpreted directly as a time 

    Таким образом, решение

     find . -type f -newermt 20111222 \! -newermt 20111225 

    Нижняя граница включительно, а верхняя граница – эксклюзивная, поэтому я добавил к ней 1 день! И он рекурсивный. Он отлично работает при поиске версии 4.5.

    В дополнение к уже указанным ответам, обратите внимание, что вы можете напрямую указать свои даты:

     find -type f -newermt "2011-12-22" \! -newermt "2011-12-24" 

    или

     find -type f -newermt "2011-12-22 00:00:00" \! -newermt "2011-12-24 13:23:00" 

    если вы дополнительно хотите указать время.

    Предполагая, что вам не нужна точность до секунд, это должно сработать.

     find . -type f -mmin -$(((`date +%s`-`date -d 20111222 +"%s"`)/60)) \! -mmin +$(((`date +%s`-`date -d 20111224 +"%s"`)/60)) 

    EDIT: Изменен cmin до mmin после комментария @ Eelvex. EDIT: '\!' отсутствует

    find может принимать дату и время, отформатированное в формате ISO, поэтому для сервера в UTC, например, вы можете указать смещение в течение нескольких часов от места, где бы вы ни находились. Это также заставляет добавить день, так как вы тоже сравниваете время:

     find -type f -newermt 20111224T0800 \! -newermt 20111225T0800