Isso pode ser feito pelo GNU ls
+ awk
one-liner:
ls -vr *.depot | awk -F- '$1 == name{system ("rm \""$0"\"")}{name=$1}'
Explicação: os nomes dos arquivos são passados como entrada para o script awk. As opções -vr
fazem com que os nomes dos arquivos sejam classificados como números de versão na ordem inversa, portanto, por exemplo, foo-1.9.depot
vem depois de foo-1.10.depot
. O script awk armazena a primeira parte do nome (até o primeiro -
) na variável name
. Quando a primeira parte do nome atual é idêntica à primeira parte do nome anterior, o script invocou rm
para excluir o arquivo atual (que é uma versão mais antiga).