2011-01-20 4 views

risposta

5

Se è sufficiente ottenere un elenco di sottodirectory (senza preoccuparsi della lingua/dello strumento da utilizzare) find è il comando che è necessario.

È in grado di trovare qualsiasi cosa in un albero di directory.

Se per immediato si intende che è necessario solo le directory figlio, ma non l'opzione nipote -maxdepth farà il trucco. Poi -type vi permetterà di specificare che sei solo alla ricerca per le directory:

find YOUR_DIRECTORY -type d -maxdepth 1 -mindepth 1 
+0

Questa soluzione non è corretta: il risultato include la directory principale 'YOUR_DIRECTORY'. – oberlies

+0

@oberlies: OP non ha specificato che desiderava solo il nome delle directory senza il relativo percorso. Per molti (più?) Scopi './Dir' e' dir' sono esattamente gli stessi. – peoro

+0

Il comando proposto restituisce il seguente elenco: "TUA_DIRECTORY YOUR_DIRECTORY/subdir01 YOUR_DIRECTORY/subdir02 YOUR_DIRECTORY/...", quindi la prima voce dell'elenco non è corretta. – oberlies

11

Usa ls -d */.

Spiegazione:

  • -d farà ls stampano i nomi delle directory invece che il suo contenuto.
  • La barra assicura che vengano considerate solo le directory, non i file.
-1

utilizzare questa

ls | grep/$

il grep trova qualcosa che termina in/che le directory fanno.

+1

Questa non è una soluzione generale. Suppone che 'ls' sia aliasato a' ls -F'. – oberlies

1

È inoltre possibile utilizzare il sotto -

$ ls -l | grep '^d' 

Breve spiegazione: Come in elenco lungo, le directory iniziano con 'd', in modo che il comando precedente (grep) filtra quelli risultato, che iniziano con ' d ', che non sono altro che directory.

Problemi correlati