Come elencare solo le directory in Linux

Il comando ls in Linux viene utilizzato per elencare il contenuto di qualsiasi directory.

Per impostazione predefinita, elenca tutti i contenuti, sia esso un file o una directory o un collegamento o una named pipe.

Ma cosa succede se si desidera elencare solo le directory? Come fai?

Come qualsiasi cosa in Linux, ci sono diversi modi per eseguire lo stesso compito. Elencare solo le directory non è diverso:

  • ls-d */
  • ls-l | grep ‘^d’
  • trova . – maxdepth 1-tipo d
  • eco * /
  • albero – d-L 1

Non preoccuparti. Spiegherò le cose in dettaglio. Ecco il contenuto della directory che ho intenzione di utilizzare negli esempi qui:

elenca il contenuto di una directory in Linux

Utilizzare il comando ls per elenco directory

è sempre bene farlo con il familiare comando ls, perché questo è il comando da utilizzare per la visualizzazione del contenuto di una directory.

Per elencare solo le sottodirectory, usa l’opzione -d con il comando ls in questo modo:

ls -d */

Ecco l’output che mostra:

 Documents]$ ls -d */another_dir/ my_dir/

Perché */? Perché senza di esso, ls -d restituirà solo il nome della directory. L’opzione -d elenca le directory non il suo contenuto (che include file, directory ecc.).

Il */ è un modello. Con *, si elenca tutto il contenuto (incluso il contenuto delle sottodirectory) e / limita il modello alle directory.

Questa immagine raffigura la differenza abbastanza bene.

Elenco solo le directory in Linux

Si può combinare con l’elenco lungo opzione -l e molte altre opzioni:

 Documents]$ ls -ld */drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/

Se non si desidera che il trailing slash (/) alla fine dei nomi di directory, è possibile utilizzare il comando taglia per tagliare fuori:

 Documents]$ ls -ld */ | cut -f1 -d'/'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir

Elenco solo le sottodirectory in una directory specifica

Il comando di cui sopra funziona nella directory corrente. Cosa succede se non si è nella stessa directory?

In questa situazione, è possibile utilizzare */alla fine del percorso della directory con ls -d :

ls -d Path/To/Dir/*/

Ecco un esempio in cui esco dalla directory Documents e quindi elenco solo le directory all’interno della directory Documents:

 ~]$ ls -ld Documents/*/drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/

Hai notato che non elenca la directory nascosta? Questa è una lacuna di questo metodo. È possibile utilizzare ls -d .*/ per visualizzare le directory nascoste, ma visualizza solo le directory nascoste.

Usa la combinazione di comando ls e grep

Puoi sempre fare affidamento sul buon vecchio comando grep per filtrare l’output per contenuti specifici.

Se si elencano a lungo i contenuti, è possibile identificare le directory perché iniziano con d.

puoi usare grep per filtrare i contenuti che iniziano con d:

ls -l | grep '^d'

Ma questo ti dà un sacco di più campi di solo i nomi di directory:

 Documents]$ ls -l | grep '^d'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir

Utilizzare il comando trova per elencare solo le directory

Ecco come utilizzare il comando trova per elencare solo le sottodirectory:

find directory_path -maxdepth 1 -type d

spero si ha familiarità con il comando trova. Lo spiegherò comunque.

Con type d, si chiede al comando find di cercare solo le directory.

Con maxdepth 1 chiedi al comando find di mantenere la ricerca solo al livello corrente (e non andare all’interno delle sottodirectory).

 Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
Elenca sudirectories solo con il comando find in Linux

Come puoi vedere nell’output sopra, mostra anche la directory nascosta.

Usa il comando ad albero per elencare solo le directory

Se il tuo obiettivo è elencare solo le directory, puoi anche usare il comando ad albero.

Per impostazione predefinita, il comando tree fornisce la struttura completa della directory. È possibile modificarlo per mostrare solo le directory e solo al livello corrente.

tree -dai -L 1
  • d – look per la directory
  • a – cercare i file nascosti e le cartelle
  • i – rimuovere la struttura ad albero dal display
  • L 1 – non andare nella sottodirectory

Ecco l’output:

 Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
Utilizzo della struttura di comando per elencare solo le sottodirectory in Linux

Utilizzando il comando echo per l’elenco directory

improbabile candidato? Sarete sorpresi di sapere che il comando echo in Linux può essere utilizzato anche per la visualizzazione del contenuto di una directory. Prova a usare echo * e guarda tu stesso.

Simile al comando ls, è anche possibile utilizzare il modello */ per elencare solo le directory nella directory di lavoro corrente.

echo */

Ecco l’output che è identico a quello che hai ottenuto con il comando ls -d :

Usando il comando echo per elencare le directory solo nella riga di comando di Linux

Ci potrebbero essere più modi per elencare solo le directory, non i file. In effetti, i metodi discussi qui potrebbero avere alcuni se e ma in base a ciò che stai cercando.

Se il tuo obiettivo è quello di visualizzare solo le directory, la maggior parte dei comandi che ho discusso funzionerebbe. Se vuoi qualcosa di più specifico come ottenere solo il nome delle directory con slash ecc., dovrai fare un po ‘ di formattazione da solo.

Spero che questo suggerimento per Linux sia utile. Domande e suggerimenti sono sempre i benvenuti.

Write a Comment

Il tuo indirizzo email non sarà pubblicato.