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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top