Например, найти все файлы, созданные между 20:00 и 23:30 для любого дня (не определенного дня)?

Проходил man find и не видел ничего, что могло бы сделать это.

Должен ли я написать свой собственный скрипт для разбора времени создания?

2 ответа2

1

Используйте эту команду ниже:

find . -mtime $(date +%s -d"Aug 10, 2013 23:30:00") -mtime $(date +%s -d"Aug 1, 2013 20:00:00")

или попробуйте это:

find /var/tmp -mtime +2 -a -mtime -8 -ls

найти файлы старше 2 дней, но не старше 8 дней.

1

Вы можете использовать -newerXY для поиска файлов между этими временами в определенный день, например:

find -newermt "20150203 2000" -a \! \( -newermt "20150203 2330" \)

Я использовал время модификации, потому что моя файловая система ext4 не содержит времени создания. Если у вас есть файловая система, которая поддерживает ее, вы можете использовать -newerBt .

Если вам нужно найти файлы между этими временами в любой день, то вам нужно запустить скрипт для каждого файла в вашем списке find . Самая простая команда для этого будет stat -c %y "$1" а затем извлечь и проанализировать поле времени.

Вы могли бы делать арифметику в секундах дня (($(stat -c %Y "$1") % 86400)) , проверяя, что это между 72000 и 84600, но это игнорировало бы летнее время, определяя файлы, измененные между 21:00 и 00:30 в течение лета.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .