2016-01-11 12 views
6

Desidero ottenere un elenco ordinato di file. I file hanno la seguente convenzione di denominazione:Linux: ordina i file in base al nome (nessun delimitatore)

DATENUMBER.txt (senza spazi).

ad esempio file di 3 su 2015-12-09 assomiglia: 201512093.txt

L'opzione version sort di ls non mi aiuta:

ls -v: 
201512183.txt 
201512184.txt 
201512188.txt 
201512191.txt 
201512195.txt 
201512199.txt 
2015121810.txt 
2015121813.txt 
2015121910.txt 
2015121911.txt 
2015121932.txt 

sort -V, --key=1.[number]do not work too come ho diversa lunghezza del file.

Poiché non ho delimitato tra la data e il numero, sort -t, -k non funziona.

Come si può vedere, ho bisogno di ordinare l'elenco dei file da primi 8 simboli nei nomi dei file, e dopo che, dall'altra parte della linea.

Il risultato atteso:

201512183.txt 
201512184.txt 
201512188.txt 
2015121810.txt 
2015121813.txt 
201512191.txt 
201512195.txt 
201512199.txt 
2015121910.txt 
2015121911.txt 
2015121932.txt 

Come posso farlo (avendo con )? Grazie.

+1

L'output mostra i file già ordinati. Qual è il tuo output previsto? – anubhava

+0

Siamo spiacenti, ha aggiunto quello che mi aspetto! –

+0

Come li vuoi ordinati? Sembrano già ordinati ... – 123

risposta

10

Questo farà genere:

sort -k1.1,1.8 -k1.9n 

che definisce due tasti, il primo essendo un tasto 8 caratteri di lunghezza fissa (campo uno, caratteri da 1 a 8), e la chiave secondaria essendo tasto numerico che inizia dal campo 1 carattere 9 (e si estende fino alla fine della riga).

L'ordinamento numerico utilizza qualsiasi numero trovato all'inizio della chiave, quindi non è necessario diventare più sofisticati. Ma se si vuole essere più precisi, si potrebbe dire sort utilizzare . per delimitare i campi, e quindi utilizzare tre tasti:

sort -t. -k1.1,1.8 -k1.9,1n -k2 

Potrebbe essere necessario questo con un sort utilità POSIX standard, se i nomi dei file hanno diverse estensioni e desideri che le estensioni influiscano sull'ordinamento. GNU sort (utilizzato su Linux) sembra utilizzare l'intera chiave in un ordinamento numerico, ma lo standard POSIX suggerisce che una chiave di ordinamento numerico sia costituita solo dalla parte numerica.

+1

:(volevo solo postare questo – 123

+0

Sì, ha fatto il lavoro! Molte grazie :) –

Problemi correlati