Например, найти все файлы, созданные между 20:00 и 23:30 для любого дня (не определенного дня)?
Проходил man find
и не видел ничего, что могло бы сделать это.
Должен ли я написать свой собственный скрипт для разбора времени создания?
Используйте эту команду ниже:
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 дней.
Вы можете использовать -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 в течение лета.