Simplesmente, já que você marcou linux , você tem o% Comandostat disponível, que extrairá o tempo de modificação de um arquivo, e o comando GNU date , que extrairá a hora de um dado momento:
find . -type f -exec sh -c '
h=$(date -d @$(stat -c %Y "$1") +%-H); [ "$h" -ge 11 ] && [ "$h" -lt 15 ]' \
sh {} \; -ls
Se os resultados parecem corretos, então:
find . -type f -exec sh -c '
h=$(date -d @$(stat -c %Y "$1") +%-H); [ "$h" -ge 11 ] && [ "$h" -lt 15 ]' \
sh {} \; -delete
Aqui está uma execução de teste com a versão -ls :
$ touch -d 'Wed Sep 12 11:00:01 EDT 2018' 11am
$ touch -d 'Wed Sep 12 12:00:02 EDT 2018' 12pm
$ touch -d 'Wed Sep 12 15:00:03 EDT 2018' 303pm
$ find . -type f -exec sh -c 'h=$(date -d @$(stat -c %Y "$1") +%-H); [ "$h" -ge 11 ] && [ "$h" -lt 15 ]' sh {} \; -ls
1705096 0 -rw-r--r-- 1 user group 0 Sep 12 2018 ./11am
1705097 0 -rw-r--r-- 1 user group 0 Sep 12 2018 ./12pm
Agradecemos a Kusalananda por escrever a excelente resposta que eu segui, em: Entendendo a opção -exec de 'find'
Observe que não queremos a {} + versão de find aqui, pois queremos que os resultados de -exec sejam por arquivo, para que possamos excluir apenas arquivos que correspondam ao intervalo de tempo.
O script de shell incorporado possui duas partes principais: determinar o registro de data e hora "hora" do arquivo e, em seguida, retornar sucesso ou falha com base no intervalo. A primeira parte é realizada em duas partes. A variável é atribuída ao resultado da substituição do comando; o comando deve ser lido de dentro para fora:
-
$(stat -c %Y "$1")- esta (segunda) chamada de substituição de comandosstatno parâmetro$1do script de shell incorporado;$1foi atribuído porfindcomo um dos nomes de caminho encontrados. A opção% Y para o comandostatretorna o tempo de modificação em segundos desde a época. -
date -d @ ... +%-H- isso leva os segundos desde a época da substituição do comando acima e pede quedatenos forneça a parte Horas desse tempo; a@sintaxe informadateque estamos dando segundos desde a época como um formato de entrada. Com a opção-no formato de saída da data, informamos a data do GNU para não preencher o valor com qualquer zeros à esquerda. Isso evita qualquer má interpretação posterior.
Quando tivermos a variável $h Hour atribuída, usamos o operador condicional bash [[ para perguntar se esse valor é maior que ou igual a 11 e também estritamente menor que 15.