Esistono diversi modi. Qui è qualcosa che è molto veloce:
find /your/dir -type d -print0 | xargs -0 echo
Questo esegue la scansione/vostro/dir ricorsivamente per le directory e passerà tutti i percorsi al comando "echo" (centralino al bisogno). Può chiamare echo a più riprese, ma proverà a passare tanti nomi di directory come consente la console in una sola volta. Questo è estremamente veloce perché alcuni processi devono essere avviati. Ma funziona solo su programmi che possono assumere una quantità arbitraria di valori come opzioni. -print0 dice a trovare per i percorsi dei file separati utilizzando un byte zero (e -0 dice xargs a leggere argomenti separati da zero byte) Se non si dispone di quella successiva, è possibile fare questo:
find /your/dir -type d -print0 | xargs -0 -n 1 echo
o
find /your/dir -type d -print0 --exec echo '{}' ';'
l'opzione -n 1 dirà xargs non passare più argomenti di un allo stesso tempo al vostro programma. Se non si desidera che find esegua la scansione in modo ricorsivo, è possibile specificare l'opzione di profondità per disabilitare la ricorsione (non conoscendo la sintassi a memoria).
Anche se questo è utilizzabile nella tua particolare sceneggiatura è un'altra domanda ;-).
questo, ma perché? */è un jolly per tutte le directory? – jakev
Wow, funziona davvero, anche su directory con spazi. Quindi, bash deve citare implicitamente i valori quando espande il carattere jolly? Lo adoro. – harpo
@JakeVA: Sì, esattamente. Nota che non includerà le directory nascoste se non imposti 'shopt -s dotglob'. Se la directory corrente potrebbe non avere sottodirectory, dovresti anche impostare 'shopt -s nullglob' (impostalo per ogni evenienza). –