modo portabile per raggiungere flag -v ls' (vale a dire in ordine di versione)?
Domanda
Sto lavorando su un alcuni script di build che vorrei dipendere da solo le funzioni standardizzate. Ho bisogno di ordinare alcuni file dalla versione. Dire i file sono bar-1. {0,2,3} bar-11. {0,2,3}.
Per impostazione predefinita, ls mi da:
bar-1_0
bar-11_0
bar-11_2
bar-11_3
bar-1_2
bar-1_3
Come quello che voglio è facile con 'ls -v':
bar-1_0
bar-1_2
bar-1_3
bar-11_0
bar-11_2
bar-11_3
Il problema è che 'ls -v' non è standard . Standard sorta sembra mancare l'opzione che voglio, anche se potrei essere guardando vecchie versioni delle specifiche.
Qualcuno può suggerire un modo portabile per ottenere questo effetto a corto di scrivere il mio routine di ordinamento?
Grazie, Rhys
Soluzione
sort -n -t- -k2
sembra di fare ciò che si vuole. -n
ti dà numerico sort (vale a dire non alfabetica); -t-
imposta il separatore di campo per -
, e -k2
seleziona il secondo campo, cioè il numero di versione.
Il mio sort
, su Ubuntu, fa anche la parte con il carattere di sottolineatura in modo corretto, ma non sono sicuro se questo è normale. Certo, si potrebbe ordinare dalla versione minore prima, poi da versione maggiore.