Como apagar arquivos se uma parte numérica do nome deles for maior que um dado número?

2

Eu tenho arquivos assim:

cap_20151023T122915_791033959.png
cap_20151023T122918_946392456.png
cap_20151023T122920_227637228.png
cap_20151023T122920_875467456.png

e gostaria de usar o comando find para excluir aqueles maiores que, por exemplo, cap_20151023T122919* , o que resultaria na exclusão de cap_20151023T122920_227637228.png e cap_20151023T122920_875467456.png .

Existe alguma maneira de fazer isso, de preferência com um único comando find ?

    
por this.lau_ 23.10.2015 / 14:18

2 respostas

1

Com zsh e <[x]-[y]> operador glob (corresponde aos números no intervalo x a y , inclusive; qualquer um dos números pode ser omitido para tornar o intervalo em aberto ) por exemplo:

print -rl -- **/cap_20151023T<122920->_*

ou, se você quiser selecionar apenas os nomes dos arquivos no intervalo 122920-999999 :

print -rl -- **/cap_20151023T<122920-999999>_*

com nomes de arquivos como:

tmp/cap_20151023T122915_791033959.png
tmp/cap_20151023T122915791_959.png
tmp/cap_20151023T122918_946392456.png
tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T1229205_875467456.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

o primeiro imprime:

tmp/cap_20151023T122915791_959.png
tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T1229205_875467456.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

enquanto o segundo é impresso:

tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

Se você estiver satisfeito com o resultado, substitua print -rl por rm -f

    
por 23.10.2015 / 14:57
0

não é o ideal, mas isso será feito:

find /where/is/search/folder -name "cap_20151023T1229[2-9]*" -exec rm '{}' \;

apenas substitua os números entre colchetes pelo que você precisa excluir e altere a posição conforme necessário.

espero que ajude!

    
por 23.10.2015 / 14:48

Tags