Come faccio a ls
ordinare per tipo di file (ad esempio prima le directory e poi per l'estensione del file)? Le risposte suggerite in (Super User) Fai in modo che l'ordinamento per tipo di file comporti errori di opzione sconosciuti da ls
.
Come faccio a ls
ordinare per tipo di file (ad esempio prima le directory e poi per l'estensione del file)? Le risposte suggerite in (Super User) Fai in modo che l'ordinamento per tipo di file comporti errori di opzione sconosciuti da ls
.
Risposte:
Come hai scoperto, la versione Darwin del ls
comando non supporta l' -X | --sort=extension
opzione. Questa opzione è unica per la versione GNU di ls
.
Puoi ottenere la versione GNU di ls
per il tuo sistema. Il modo più semplice per farlo è tramite il gestore di pacchetti Homebrew e il sistema di porting. Con Homebrew installato fai:
brew install coreutils
per aggiungere il pacchetto GNU Core Utilities al sistema. Tutti i programmi di utilità avranno il prefisso in g
modo che non si scontrino con i programmi di utilità Darwin predefiniti forniti da OS X.
Con GNU Core Utilites installato ora puoi fare:
gls -X
E vedrai l'output ordinato come desideri.
Se vuoi usare GNU Core Utils invece delle utility fornite con OS X puoi inserire la seguente riga nel tuo ~/.bashrc
file:
source /usr/local/Cellar/coreutils/8.14/aliases
E non sarà più necessario utilizzare il g
prefisso sui comandi. Dirò che questa non è una cosa assolutamente sicura da fare poiché alcuni dei programmi di utilità GNU differiscono dai built-in di bash e dagli strumenti di Darwin nel modo in cui si comportano, abbastanza da poter rovinare altre cose nella tua sessione di shell. Quindi fallo con cautela.
Basato su una risposta nell'articolo Super User collegato :
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Se vuoi vedere l'intero output di ls -l
, lascia fuori la cut
parte.
/bin/ls
.