Que tal
#/usr/bin/env bash
for f in *
do
[[ $f =~ [0-9]{4}_[0-9]{4}_[0-9]{2}_[0-9]{2} ]] ||
echo "File $f does not match"
done
A expressão regular verifica qualquer dígito ( [0-9]
). Os números nas chaves são o número de repetições, então [0-9]{4}
corresponderá a qualquer 4 dígitos.
Eu recomendo que você não use o bash para isso, mas encontre em seu lugar. Ele provavelmente será mais rápido e certamente mais portátil (nem todos os shells podem lidar com expressões regulares):
find -regextype posix-egrep -not -regex '\./[0-9]{4}_[0-9]{4}_[0-9]{2}_[0-9]{2}'