Você pode usar o GNU find :
find * -regextype posix-extended \! -regex '.*[0-9]{8}.*' -prune
Se a data estiver sempre no final da sequência e precedida por . , você também poderá usar o regex .*\.[0-9]{8} , o que refletiria isso e reduziria o risco de arquivos excluídos incorretamente.
Como funciona:
-
-regextype posix-extendedseleciona um tipo de regex adequado para o regex abaixo -
\!nega o significado da declaração que segue -
-regex '.*[0-9]{8}.*'corresponde a qualquer arquivo que tenha oito dígitos consecutivos (isto é, uma data do formulário20150616) -
-pruneimpede quefindliste os subdiretórios
Outra opção:
- Adicione a opção
-fpara listar apenas arquivos
EDITAR:
No AIX sem suporte para expressão regular em find , você poderia usar o seguinte (usando o mecanismo de globalização padrão):
find * \! -name '*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]*' -prune
Ou, se a data estiver sempre no final da string e precedida por um . , o seguinte padrão poderá ser usado: *.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
EDIT 2:
Se você quiser que os arquivos comecem com test , use:
find * -prune -type f \! -name 'test*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
Se você não quiser usar a expansão de nome de arquivo pelo shell e não tiver um diretório adicional nesse diretório, também poderá usar:
find . -type f \! -name 'test*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'