A melhor maneira de fazer esse tipo de operação é usando o comando find . Tem muitas abordagens; Vou explicar dois destes:
1) Intervalos de tempo relativo
Nessa abordagem, você pode especificar exatamente os registros de data e hora de início e término e filtrar todos os arquivos que não forem modified/accessed/changed durante esse período. Você pode fazer isso usando o comando touch , salvando um arquivo com um timestamp específico.
No próximo exemplo, criamos dois marcadores ( timestamp_begin_file e timestamp_end_file ), definidos como 3 HOURS AGO e 1 HOUR AGO . Em seguida, usamos as opções newerct e ! newerct para selecionar arquivos mais recentes depois de 3 horas e não mais recentes e depois 1 hora (basta dar uma olhada em change time neste exemplo). Todos os arquivos selecionados serão copiados na pasta $DESTINATION_PATH .
touch -t $(date -d '3 HOUR AGO' +%Y%m%d%H%M.%S) timestamp_begin_file
touch -t $(date -d '1 HOUR AGO' +%Y%m%d%H%M.%S) timestamp_end_file
find "$FOLDER" -newerct timestamp_begin_file ! -newermt timestamp_end_file -exec cp {} $DESTINATION_PATH \;
2) Intervalos de tempo absoluto
Você pode usar as opções newermt para filtrar arquivos desnecessários em um intervalo de datas específico. Aqui, selecionamos apenas arquivos modificados durante o dia de 2007-06-07 :
find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08 -exec cp {} $DESTINATION_PATH \;
Como eu disse, muitas outras alternativas existem (como sugerido por @Jaleks, -a/m/ctime , mas devido à falta de informação, não podemos saber qual caso é adequado para você).
Para mais informações sobre filtragem de tempo em find , dê uma olhada no página de localização