Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
.. e via discorrendo.
Mi occorrerebbe uno script che elimini tutti gli archivi con versione inferiore alla maggiore e poi a sua volta mi tenga il tar.bz2
Es: dovrebbero rimanermi, dalla lista sopra, solo
rm *gz; for i in `ls|awk -F '-' '{print $1}'|sort|uniq`; do for j in `ls $i-*|awk -F '-' '{print $2}'|awk -F '.tar.bz2' '{print $1}'|sort -r -n|uniq|tail -n +2`; do rm $i-$j.tar.bz2;done;done
rm *gz;old_file=""; for file in *; do [[ ${file%%-*} == ${old_file%%-*} ]] && rm $old_file; old_file=${file}; done
In pratica controlla due file successivi e se la parte iniziale (la parte prima del primo '-') è uguale per entrambi, allora cancella il primo dei due file. Si bassa sul fatto che i file sono già ordinati lessicograficamente.
Nota0: come ho scritto qualche giorno fa in un altro thread, il 'for in *' dovrebbe ritornare i file ordinati (anche se non l'ho mai trovato scritto da nessuna parte), comunque, per stare più tranquillo potresti usare: