Este filtro emitirá apenas nomes de arquivo correspondentes aos seus critérios, ou seja, aqueles que precisam ser excluídos:
perl -MTime::Piece -ne 'BEGIN { $now=localtime->ymd("")} ($s,$e)=($_=~m/(\d{8})(\d{8})\./); print $_ if $e lt $now || $s gt $now'
Exemplos:
echo "File2016010120170101.txt" | perl -MTime::Piece -ne 'BEGIN { $now=localtime->ymd("")} ($s,$e)=($_=~m/(\d{8})(\d{8})\./); print $_ if $e lt $now || $s gt $now'
File2016010120170101.txt
echo "File2016010120190101.txt" | perl -MTime::Piece -ne 'BEGIN { $now=localtime->ymd("")} ($s,$e)=($_=~m/(\d{8})(\d{8})\./); print $_ if $e lt $now || $s gt $now'
(nothing)
Dependendo de como você tem sua lista inicial de nomes de arquivos, você pode pré-processar a lista e depois executar xargs rm
no resultado.
Aconselho a adaptação do regex para ser o mais rigoroso possível, dependendo dos seus arquivos. E / Ou para revisar os arquivos prestes a serem excluídos antes de realmente excluí-los.