Linha de comando regextype para excluir arquivos

Linha de comando regextype para excluir arquivos

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 echocomando e, quando tiver certeza de que ele lista os arquivos corretos, use-o rm.

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 -printquando -deleteestiver 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 -printpor -deletequando 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

informação relacionada