Esegui il comando ls per tipo di file (ad es. directory ed estensione file)

13

Come faccio a rendere ls ordinamento per tipo di file (ad esempio prima le directory e poi l'estensione del file)? Le risposte suggerite in (Super User) rendono l'ordinamento per tipo di file generano errori di opzione sconosciuti da ls .

    
posta Kit 10.02.2012 - 07:52
fonte

2 risposte

19

Come hai scoperto, la versione di Darwin del comando ls non supporta l'opzione -X | --sort=extension . 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 Homebrew gestore di pacchetti e sistema di porting. Con Homebrew installato fai:

brew install coreutils

per aggiungere il pacchetto GNU Core al tuo sistema. Tutte le utility saranno precedute da g in modo che non entrino in collisione con i programmi di utilità Darwin predefiniti forniti da OS X.

Con i GNU Core Utilites installati ora puoi fare:

gls -X

E vedrai l'output ordinato come desideri.

Se vuoi utilizzare GNU Core Utils al posto delle utility fornite con OS X puoi inserire la seguente riga nel tuo file ~/.bashrc :

source /usr/local/Cellar/coreutils/8.14/aliases

E non dovrai più usare il prefisso g sui comandi. Devo dire che non è una cosa completamente sicura da fare, poiché alcuni dei programmi di utilità GNU differiscono dagli strumenti di bash built-in e Darwin nel modo in cui si comportano, abbastanza da far fallire altre cose nella sessione di shell. Quindi fai questo con cautela.

    
risposta data 10.02.2012 - 15:46
fonte
1

In base a una risposta contenuta nel 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 la parte cut .

    
risposta data 10.02.2012 - 21:54
fonte

Leggi altre domande sui tag