Isso testa todos os arquivos no diretório atual, usando o operador [[
do bash, em relação ao padrão:
- início da string
^
- 3 dígitos
-
-
- 8 dígitos
-
-
- 9 dígitos
-
.pdf
- fim da string
$
- que os 8 dígitos do meio são avaliados para uma data válida de acordo com a data do GNU
Você pode ajustar as suposições acima com bastante facilidade.
for f in *
do
[[ $f =~ ^([0-9][0-9][0-9])-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]).pdf$ ]] &&
date -d ${BASH_REMATCH[2]} &>/dev/null &&
echo Valid: "$f"
done