it-swarm.it

C'è qualche opzione con il comando 'ls' che vedo solo le directory?

A volte, devo controllare solo le directory e non i file. C'è qualche opzione con il comando ls? O c'è qualche utilità per farlo?

EDIT : sto usando Mac OS X e ls -d mi da . anche se ho directory.

86
prosseek

So che esiste già una risposta selezionata, ma puoi ottenere il comportamento richiesto con solo ls:

ls -ld -- */

(Notare che '-' segna la fine dei parametri, impedendo che i nomi delle cartelle che iniziano con un trattino vengano interpretati come ulteriori opzioni di comando.)

Questo elencherà tutte le directory non nascoste (a meno che non si configurino i globs di Shell per espanderle) nella directory di lavoro corrente in cui viene eseguita (si noti che include anche collegamenti simbolici alle directory). Per ottenere tutte le sottodirectory di qualche altra cartella, basta provare:

ls -ld /path/to/directory/*/

Si noti che -l è facoltativo.

96
Steven D

No, ma un semplice comando find lo farà:

find . -type d -depth 1

o grep

ls -F | grep /

È quindi possibile alias uno dei due, se necessario.

16
gvkv

Avevo anche bisogno di visualizzare le directory nascoste, quindi ho modificato il suggerimento sopra per soddisfare le mie esigenze

ls -d -- */ .*/

(a seconda della shell, che può includere anche . e ..)

7
Neil Chandler

Mi piace l'utilità albero per avere una panoramica della struttura delle directory. È disponibile in MacPorts e in tutte le distribuzioni Linux che ho provato.

tree -d -L 2

Ciò mostrerebbe tutte le directory, a due livelli di profondità.

7
Claes Mogren

Con zsh (come trovato di default su macOS, era anche /bin/sh lì), useresti i qualificatori glob per selezionare i file in base al loro tipo:

  • Elenca le directory non nascoste:

    ls -d -- *(/)
    
  • Elenca tutte le directory:

    ls -d -- *(D/)
    

    (. e .. sono sempre esclusi, aggiungili singolarmente se li desideri)

  • Includi anche collegamenti simbolici alle directory:

    ls -d -- *(D-/)
    

    (- applica quindi ulteriori qualificazioni dopo la risoluzione del collegamento simbolico).

3

Non esiste solo un'opzione per elencare le directory ...

Ma puoi usare -d (elenca le directory stesse, non il loro contenuto) e */ per abbinare le directory stesse:

ls -d */

E prova a usare il punto, per quelli nascosti, ls -d .*/.

Solo per divertimento, prova: ls -d e ls */. Le differenze saranno chiare!

Rif:

0
marcio