GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso elencare in modo ricorsivo tutte le directory in una posizione, in ampiezza?

Se vuoi farlo utilizzando strumenti standard, la seguente pipeline dovrebbe funzionare:

find . -type d | perl -lne 'print tr:/::, " $_"' | sort -n | cut -d' ' -f2

Cioè,

  1. trova e stampa qui tutte le directory approfondite in primo luogo
  2. conta il numero di barre in ogni directory e anteponilo al percorso
  3. ordina per profondità (ovvero numero di barre)
  4. estrarre solo il percorso.

Per limitare la profondità trovata, aggiungi l'argomento -maxdepth al comando find.

Se vuoi che le directory siano elencate nello stesso ordine in cui le trovi, usa "sort -n -s" invece di "sort -n"; il flag "-s" stabilizza l'ordinamento (vale a dire, preserva l'ordine di input tra gli elementi che si confrontano allo stesso modo).


Il find comando supporta -printf opzione che riconosce molti segnaposto.

Uno di questi segnaposto è %d che restituisce la profondità del percorso dato, relativa a where find iniziato.

Pertanto puoi utilizzare il seguente semplice one-liner:

find -type d -printf '%d\t%P\n' | sort -r -nk1 | cut -f2-

È abbastanza semplice e non dipende da strumenti pesanti come perl .

Come funziona:

  • genera internamente un elenco di file, ciascuno rappresentato come una riga a due campi
  • il primo campo contiene la profondità, che viene utilizzata per l'ordinamento numerico (inverso) e quindi eliminata
  • il risultato è un semplice elenco di file, un file per riga, nell'ordine più profondo

Linux
  1. Come trovare un file in Linux in tutte le directory in modo ricorsivo

  2. Come elencare o ordinare tutti i file per dimensione in Linux

  3. Come elencare tutti gli utenti che hanno effettuato l'accesso

  4. Elenca in modo ricorsivo tutti i file in una directory, inclusi i file nelle directory dei collegamenti simbolici

  5. Come rimuovere tutte le directory .svn dalle directory delle mie applicazioni

Come elencare tutti i database in PostgreSQL

Come trovare ed elencare in modo ricorsivo i file per data in Linux

Come trovare tutti i caratteri installati in Linux

Come trovare/elencare tutti i file univoci in due directory?

Come posso eliminare in modo ricorsivo tutti i file e le directory vuoti in Linux?

Come elencare tutti i file di una partizione su Linux?