GNU/Linux >> Linux Esercitazione >  >> Linux

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, che si tratti di un file o di una directory o di un collegamento o di 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 userò negli esempi qui:

Usa il comando ls per elencare solo le directory

È sempre bene farlo con il familiare comando ls perché questo è il comando che usi per visualizzare il contenuto di una directory.

Per elencare solo le sottodirectory, usa -d opzione con ls comando come questo:

ls -d */

Ecco l'output che mostra:

[[email protected] Documents]$ ls -d */
another_dir/  my_dir/

Perché */ ? Perché senza di essa, ls -d restituirà solo il nome della directory. Il -d directory dell'elenco di opzioni non il suo contenuto (che include file, directory, ecc.).

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

Questa immagine descrive abbastanza bene la differenza.

Puoi combinarlo con l'opzione di elenco lungo -l e la maggior parte delle altre opzioni:

[[email protected] 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 vuoi la barra finale (/) alla fine dei nomi delle directory, puoi usare il comando taglia per tagliarla:

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

Elenca solo le sottodirectory in una directory specifica

Il comando precedente funziona nella directory corrente. Cosa succede se non sei nella stessa directory?

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

ls -d Path/To/Dir/*/

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

[[email protected] ~]$ 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. Puoi usare ls -d .*/ per visualizzare le directory nascoste, ma mostra solo le directory nascoste.

Usa la combinazione del comando ls e grep

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

Se elenchi i contenuti in modo lungo, puoi 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à molti più campi oltre ai nomi delle directory:

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

Usa 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 che tu abbia familiarità con il comando trova. Lo spiegherò comunque.

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

Con maxdepth 1 chiedi al comando trova di mantenere la ricerca solo al livello corrente (e non di entrare nelle sottodirectory).

[[email protected] Documents]$ find . -maxdepth 1 -type d
.
./my_dir
./another_dir
./.my_hidden_dir

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

Usa il comando tree per elencare solo le directory

Se il tuo scopo è quello di elencare solo le directory, puoi anche usare il comando tree.

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

tree -dai -L 1
  • d - cerca solo le directory
  • a - cerca anche i file e le directory nascosti
  • i - rimuove la struttura ad albero dal display
  • L 1 - non entrare nelle sottodirectory

Ecco l'output:

[email protected] Documents]$ tree -dai -L 1
.
another_dir
my_dir
.my_hidden_dir

3 directories

Utilizzo del comando echo per elencare le directory

Il candidato improbabile? Sarai sorpreso di sapere che il comando echo in Linux può essere utilizzato anche per visualizzare il contenuto di una directory. Prova a usare echo * e guarda tu stesso.

Simile al comando ls, puoi anche usare il */ pattern per elencare solo le directory nella directory di lavoro corrente.

echo */

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

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

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

Spero che tu possa trovare utile questo suggerimento su Linux. Domande e suggerimenti sono sempre ben accetti.


Linux
  1. Come usare il comando Su in Linux

  2. Comando Linux ls - Elenca file

  3. Comando Linux:come "trovare" solo file di testo?

  4. Come elencare in modo ricorsivo le directory in C su Linux?

  5. Come posso elencare tutti gli utenti bloccati in Linux?

Comando SS in Linux

Come elencare i file in modo ricorsivo in Linux

Come elencare i filesystem in Linux con lfs

Come elencare i dischi su Linux

Come elencare utenti e gruppi su Linux

Come elencare tutti gli utenti di un gruppo in Linux