Regextype da linha de comando para excluir arquivos

0

Eu 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 aprendi para usar o 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: " {} \;

Eu alterei esse 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, em seguida, _

    
por Rocco The Taco 25.05.2017 / 01:59

1 resposta

2

Em primeiro lugar, o comando como escrito não exclui nada: conforme observado no a nswer que você vinculou

% bl0ck_qu0te%

Segundo, é muito complicado para o seu caso, já que você não quer limitar a remoção a um intervalo ou subconjunto das correspondências (assim você não precisa do material de teste do shell) - você poderia simplesmente fazer

find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print

(para testar) e substitua -print por -delete assim que estiver satisfeito, está funcionando corretamente.

No entanto, mesmo o regex parece supercomplicado - uma simples correspondência glob é na verdade menos digitação:

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
    
por steeldriver 25.05.2017 / 02:17