GNU/Linux >> Linux Esercitazione >  >> Linux

Usando Bash Sort per ordinare i file come un boss

Stai cercando un modo per organizzare i tuoi file ed eseguire alcune operazioni su di essi? Ci sono molti casi nella programmazione in cui è necessario ordinare alcuni dati, come un elenco di file. Ordinare i file con Bash sort e ls i comandi ti aiuteranno a mantenere le cose organizzate.

In questo tutorial imparerai i fondamenti dell'ordinamento di file e contenuti di file.

Mettiamo in ordine!

Prerequisiti

Questo tutorial utilizza Ubuntu 20.04, ma qualsiasi distribuzione Linux funzionerà.

Bash Ordina i file in ordine alfabetico

Esistono molti modi per ordinare i file in Linux, ma scendiamo al modo più comune, ordinare i file in ordine alfabetico.

Avvia il tuo terminale ed esegui il ls -l comando seguente per ottenere un elenco di file in una directory in ordine crescente. Il -l flag dice al ls comando per stampare l'output restituito in un formato elenco lungo.

ls -l

Per impostazione predefinita, il ls comando elenca i file in ordine crescente. Per invertire l'ordine, passa il -r segnala al ls -l comando, come questo:ls -lr . Superamento del -r segnala al ls -l comando si applica ad altri esempi in questo tutorial.

Utilizzo di Bash Ordina per ordinare i file per dimensione

Invece di ordinare i file in ordine alfabetico, potresti voler ordinare i file in base alla dimensione del file. L'ordinamento dei file per dimensione è utile quando si dà la priorità alla visualizzazione dei file più piccoli o più grandi in un elenco.

Per ordinare i file per dimensione, passa il -S flag per dire al ls comando per ordinare l'elenco dei file in base alla dimensione del file.

Esegui il comando seguente per elencare i file (ls ) ordinato per dimensione del file in un formato elenco lungo (-lS ).

ls -lS

Di seguito, puoi vedere il comando che ha ordinato i file per dimensione in ordine decrescente (dalla dimensione più grande alla più piccola).

Per invertire l'ordine (dal più piccolo al più grande), aggiungi il -r flag, in questo modo:ls -lSr

Ordina i file per ora di modifica tramite Bash Sort

Passando dall'ordinamento dei file in base alle dimensioni, potresti riscontrare un caso d'uso in cui è necessario ordinare i file in base al momento in cui sono stati modificati. Ad esempio, hai dimenticato il nome del file che hai creato e ricordi solo l'ultima volta che hai modificato il file.

Esegui il comando sotto dove -t il parametro dice al ls comando per ordinare i file in base all'ora di modifica.

ls -lt

Ordinamento dei file per estensione del file

Quando cerchi un file con un particolare tipo di file, l'ordinamento dei file per estensione è la soluzione ideale.

Esegui il comando seguente per elencare i file (ls ) nella directory di lavoro e ordina in base alle loro estensioni (-lx ).

ls -lX

Nota di seguito 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 la tua attenzione dal ls comando, prova a eseguire il sort comando. Il sort il comando ordina il contenuto del file in base alla bandiera che aggiungerai. Ma prima, hai bisogno di un file con i contenuti che modificherai.

Esegui il comando seguente per creare un file di testo denominato ~/data/fruits.txt che contiene nomi di frutti. Il -e flag abilita l'interpretazione della barra rovesciata per scrivere ogni parola su una nuova riga (\n ).

echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt

Ora esegui il comando seguente su sort ogni parola in fruits.txt .

sort fruits.txt

Di seguito, puoi vedere che i contenuti del file sono ordinati in ordine crescente.

Senza flag, il sort comando ordina il contenuto del file in ordine crescente per impostazione predefinita. Per invertire l'ordine di ordinamento, aggiungi il -r contrassegnare il comando di ordinamento, in questo modo:sort -r fruits.txt . Ordinamento in ordine inverso aggiungendo il -r flag si applica ad altri esempi in questo tutorial.

Ordinamento di un elenco di numeri in un file di testo

Il comando per ordinare i numeri è simile all'ordinamento dei testi in un file, ma dovrai aggiungere il -n bandiera invece. Creiamo prima un file per dimostrare come ordinare numericamente il contenuto di un file.

Esegui il comando seguente per creare un file denominato ~/data/scores.txt che contiene numeri casuali, ciascuno in una nuova riga.

echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt

Ora esegui il comando seguente su sort i numeri (-n ) nel ~/data/scores.txt file.

sort -n scores.txt

Di seguito puoi vedere i numeri elencati in righe che vanno dal numero più piccolo al numero più grande.

Ordinamento di un elenco di numeri di versione in un file di testo

Forse hai un elenco di numeri di versione in un file di testo che vuoi ordinare. In tal caso, aggiungendo il --version-sort l'opzione farà il trucco.

Per dimostrare come il --version-sort l'opzione funziona, crea prima un file di testo.

Esegui il comando seguente per creare un file di testo denominato ~/data/versions.txt con numeri di versione casuali elencati, ciascuno su una nuova riga (\n ).

echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt

Ora esegui il comando seguente su sort i numeri di versione (--version-sort ) nel versions.txt file. Il --field-separator l'opzione dice al sort comando che i numeri in ogni versione siano separati da un punto (. ). Puoi modificare il separatore di campo in qualsiasi carattere che separi i numeri nelle versioni elencate nel file di testo.

sort --version-sort --field-separator=. versions.txt

Bash Sort per trovare e ordinare i file tramite l'estensione del file

Hai eseguito comandi singoli (o ls o sort ) negli esempi precedenti. Ma nella programmazione, potrebbe essere spesso necessario utilizzare due o più comandi insieme. Come? Convogliando un comando a un altro.

Esegui il comando seguente su find tutti i file markdown (-iname "*.md" ) nella directory di lavoro (. ) e ordinali in ordine alfabetico decrescente (sort -r ). Prova a trovare e ordinare altri file modificando "*.md" a un'altra estensione di file.

find . -iname "*.md" | sort -r

Se preferisci salvare l'output ordinato in un file di testo invece dell'output standard sulla console, aggiungi il --output opzione, come questa:find . -iname "*.md" | sort -r --output=sorted.txt . Il --output l'opzione dice al sort comando per creare un file di output per l'elenco ordinato di file.

Conclusione

Il motivo di questo articolo era di insegnarti i diversi modi di ordinare usando i comandi Bash su una macchina Linux. Ora hai imparato a ordinare l'elenco dei file e a ordinare il contenuto dei file. Inoltre, dovresti anche sapere come creare pipeline diversi comandi per un ordinamento dei file più complesso.

Con questa nuova conoscenza come trampolino di lancio, perché non creare script per automatizzare gli elenchi di file e l'ordinamento del contenuto dei file?


Linux
  1. Gestisci la directory Linux /tmp come un capo

  2. Come ordinare i file in base alle loro autorizzazioni usando Ls?

  3. Script Bash per ordinare i file in cartelle alfabetiche su Readynas Duo V1?

  4. Utilizzo delle istruzioni Case in Bash

  5. Array in Bash non trovato

Come leggere i file riga per riga in Bash

Utilizzo di Bash per l'automazione

Trova i file o le directory più grandi?

Trasferisci file usando WinSCP

Sort --parallel non sta parallelizzando

Usando sftp come scp