
Tenho uma série de arquivos que sempre começam com pelo menos 5 valores numéricos como:
85966_88.jpg
Usando esta resposta eu aprendipara usar find e regextype em um comando para excluir arquivos como este:
find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;
Alterei este comando para atender às minhas necessidades assim:
find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;
Eu executo o comando e ele não exclui os arquivos. Não consigo descobrir como remover todos os .jpg que possuem valores numéricos nos primeiros 5 dígitos e depois _
Responder1
Em primeiro lugar, o comandocomo escritonão exclui nada: conforme observado na resposta que você vinculou
Teste isso com o
echo
comando e, quando tiver certeza de que ele lista os arquivos corretos, use-orm
.
Segundo, é muito complicado para o seu caso, já que você não deseja limitar a remoção a um intervalo ou subconjunto de correspondências (para não precisar do material de teste do shell) - você poderia simplesmente fazer
find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print
(para testar) e substitua -print
quando -delete
estiver satisfeito com o funcionamento correto.
No entanto, até mesmo regex parece complicado demais - uma simples correspondência glob é, na verdade, menos digitada:
find -name '[0-9][0-9][0-9][0-9][0-9]_*.jpg' -print
(novamente, substitua -print
por -delete
quando tiver certeza).
Se você não precisa pesquisar recursivamente, um simples shell glob deve funcionar:
rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg