Stai cercando un modo per organizzare i tuoi file e svolgere alcune operazioni su di essi? Ci sono molte istanze nella programmazione in cui è necessario ordinare alcuni dati, come ad esempio una lista di file. Ordinare i file con i comandi sort
e ls
di Bash ti aiuterà a mantenere le cose organizzate.
In questo tutorial, imparerai i fondamenti dell’ordinamento dei file e dei contenuti dei file.
Cominciamo a ordinare!
Prerequisiti
Questo tutorial utilizza Ubuntu 20.04, ma qualsiasi distribuzione Linux funzionerà.
Ordinare i File Alfabeticamente con Bash
Ci sono tonnellate di modi per ordinare i file in Linux, ma concentriamoci sul modo più comune, ovvero ordinare i file in ordine alfabetico.
Avvia il tuo terminale ed esegui il comando ls -l
di seguito per ottenere una lista di file in una directory in ordine crescente. Il flag -l
indica al comando ls
di stampare l’output restituito in un formato di elenco lungo.

Per impostazione predefinita, il comando
ls
elenca i file in ordine crescente. Per invertire l’ordine di ordinamento, passa il flag-r
al comandols -l
, in questo modo:ls -lr
. Passare il flag-r
al comandols -l
si applica agli altri esempi in questo tutorial.
Usare Bash Sort per Ordinare i File per Dimensione
Invece di ordinare i file in ordine alfabetico, potresti volerli ordinare in base alla dimensione del file. Ordinare i file per dimensione è utile quando si vuole dare priorità alla visualizzazione dei file più piccoli o più grandi in una lista.
Per ordinare i file per dimensione, passa il flag -S
al comando ls
per ordinare la lista dei file in base alla dimensione del file.
Esegui il comando seguente per elencare i file (ls
) ordinati per dimensione in un formato di lista lunga (-lS
).
Qui sotto, puoi vedere che il comando ha ordinato i file per dimensione in ordine decrescente (dal più grande al più piccolo).
Per invertire l’ordine di ordinamento (dal più piccolo al più grande), aggiungi il flag
-r
, così:ls -lSr

Ordinare i file in base al tempo di modifica tramite il comando di ordinamento Bash
Procedendo dall’ordinamento dei file per dimensione, potresti trovarvi in una situazione in cui devi ordinare i file in base all’ora in cui sono stati modificati. Ad esempio, hai dimenticato il nome del file che hai creato e ricordi solo l’ora dell’ultima modifica del file.
Esegui il comando seguente, dove il parametro -t
dice al comando ls
di ordinare i file per tempo di modifica.

Ordinare i file per estensione del file
Quando stai cercando un file con un particolare tipo di file, ordinare i file per estensione del file è la soluzione ideale.
Esegui il comando seguente per elencare i file (ls
) nella directory di lavoro e ordinarli in base alle loro estensioni (-lx
).
Nota che il comando ha ordinato i file con la stessa estensione in ordine crescente in base ai loro nomi.

Ordinamento dei contenuti in un file di testo
A questo punto, hai imparato vari metodi per ordinare i file in una directory. Spostando il tuo focus dal comando ls
, prova a eseguire il comando sort
. Il comando sort
ordina i contenuti dei file a seconda della bandiera che aggiungerai. Ma prima, hai bisogno di un file con contenuti che modificherai.
Esegui il comando qui sotto per creare un file di testo chiamato ~/data/fruits.txt che contiene nomi di frutta. La bandiera -e
abilita l’interpretazione del backslash per scrivere ogni parola su una nuova riga (\n
).
Ora esegui il comando qui sotto per sort
are ogni parola in fruits.txt
.
Sotto, puoi vedere che i contenuti del file sono ordinati in ordine ascendente.

Senza alcuna bandiera, il comando
sort
ordina i contenuti del file in ordine ascendente per impostazione predefinita. Per invertire l’ordine di ordinamento, aggiungi la bandiera-r
al comando di ordinamento, così:sort -r fruits.txt
. L’ordinamento in ordine inverso aggiungendo la bandiera-r
si applica ad altri esempi in questo tutorial.
Ordinare un Elenco di Numeri in un File di Testo
Il comando per ordinare i numeri è simile all’ordinamento dei testi in un file, ma aggiungerai la bandiera -n
. Creiamo prima un file per mostrare come ordinare numericamente i contenuti di un file.
Esegui il comando qui sotto per creare un file chiamato ~/data/scores.txt che contiene numeri casuali, ognuno su una nuova riga.
Ora esegui il comando qui sotto per sort
are i numeri (-n
) nel file ~/data/scores.txt.
Puoi vedere qui sotto i numeri elencati in righe che partono dal più piccolo al più grande numero.

Ordinare una lista di numeri di versione in un file di testo
Forse hai una lista di numeri di versione in un file di testo che desideri ordinare. Se è così, aggiungendo l’opzione --version-sort
farà al caso tuo.
Per mostrare come funziona l’opzione --version-sort
, crea prima un file di testo.
Esegui il comando qui sotto per creare un file di testo chiamato ~/data/versions.txt con numeri di versione casuali elencati, ognuno su una nuova linea (\n
).
Ora esegui il comando qui sotto per ordinare i numeri di versione (--version-sort
) nel file versions.txt. L’opzione --field-separator
dice al comando sort
che i numeri in ogni versione sono separati da un punto (.
). Puoi cambiare il separatore di campo con qualsiasi carattere che separa i numeri nelle versioni elencate nel tuo file di testo.

Bash Sort per trovare e ordinare file tramite estensione di file
Hai eseguito singoli comandi (sia ls
che sort
) negli esempi precedenti. Ma nella programmazione, potresti spesso aver bisogno di utilizzare due o più comandi insieme. Come? Utilizzando il piping di un comando verso un altro.
Esegui il comando seguente per trovare tutti i file markdown (`-iname “*.md”`) nella directory di lavoro (`.`) e ordinarli in ordine alfabetico discendente (`sort -r`). Prova a trovare e ordinare altri file cambiando `*.md` con un’altra estensione di file.

Se preferisci salvare l’output ordinato su un file di testo anziché sull’output standard sulla console, aggiungi l’opzione `–output`, così: `find . -iname “*.md” | sort -r –output=sorted.txt`. L’opzione `–output` indica al comando `sort` di creare un file di output per l’elenco ordinato dei file.
Conclusione
Lo scopo di questo articolo era insegnarti diversi modi per ordinare usando comandi Bash su una macchina Linux. Ora hai imparato a ordinare l’elenco dei file e a ordinare i contenuti dei file. Inoltre, dovresti anche sapere come concatenare diversi comandi per un ordinamento di file più complesso.
Con questa nuova conoscenza come punto di partenza, perché non creare script per automatizzare l’elenco dei file e l’ordinamento dei contenuti dei file?