поиск файлов по дате ls grep

Тема в разделе "Администрирование серверов", создана пользователем OffSpEEd, 7 авг 2015.

Модераторы: mefish, stooper
  1. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    как на серваке найти файлы созданные например с 00:00 по 12:25

    например ls -l | grep 00:00 выдает только файлы созданные в это время
    а как задать промежуток?
     
  2. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    654
    find /path/to/dir/ -mindepth 1 \
    -newermt 'YYYY-MM-DD HH:MM' \
    ! -newermt 'YYYY-MM-DD HH:MM' \
    -ls
    Верхнее - нач. дата, нижнее - конечная
     
  3. mrLom

    mrLom ♒︎

    Moderator
    Регистр.:
    24 дек 2014
    Сообщения:
    865
    Симпатии:
    1.572
    Есть куча способов
    например по штампу времени похожего файла. Найдет от его даты и выше
    find . -type f -newer filename -print

    за последние 7 дней:

    find . -mtime +7

    вариации:
    -mtime
    -atime
    -ctime
    -Btime

    К примеру, все что находим, пихаем в архивчик:
    find . -type f -newer <filename> -print | tar czv -T- -f arhive12.0.3.tgz
     
  4. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    пробовал find . -newermt 2015-08-07 00:00 ! -newermt 2015-08-07 01:10
    выдает ошибку

    но ищет либо только по датам
    find '$dir' -newermt 2015-08-07 ! -newermt 2015-08-07
    либо только по времени
    find '$dir' -newermt 00:00 ! -newermt 01:10
     
  5. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    654
    find '$dir' -newermt '2015-08-07 00:00' ! -newermt '2015-08-07 00:15'
    кавычки забыл
     
  6. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    спасибо. теперь работает. я так понимаю чтобы в этих найденных файлах что-либо найти нужно использовать grep.

    find '$dir' -newermt '2015-08-07 00:00' ! -newermt '2015-08-07 00:15' | grep -l 'needle'
    директорию для греп получается не надо указывать?
     
  7. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    654
    да. команда после прямого слеша подразумевает действие с результатом команды до слэша
     
  8. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    для упрощения использовал эту конструкцию :
    find '$dir' -mtime -1d | grep -i 'needle'

    в общем что предыдущий вариант что этот, grep ищет НЕ ВНУТРИ файлов, а ищет в названии выданных Find'ом файлов.

    а нужно чтобы греп искал внутри этих файлов. день промучался, так и не докопался


    решение найдено:
    find '$dir' -mtime -1d -exec grep -i -H 'needle' {} \;
     
    Последнее редактирование: 8 авг 2015