Risposte:
portabile:
find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print
Se sei disposto a elencare directory e file separatamente (puoi unire l'output ordinando):
{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort
Con GNU find, vedi la risposta di Shawn J. Goff .
Se sei disposto a rischiare che i personaggi non stampabili vengano rovinati anche quando non vengono inviati a un terminale, vedi la risposta di ddeimeke .
In zsh: print -rl -- **/*(DM)
( D
per includere file dot, M
per aggiungere una /
directory after)
find . \( -type d -printf "%p/\n" , -type f -print \)
Questo utilizza il comando printf per formattare i nomi delle directory e la stampa standard per il resto.
-printf
è specifico per GNU find.
find
gli argomenti posizionali gli consentono di produrre output avanzati come questo. Tuttavia, si noti che senza gli spazi attorno alla virgola, non funzionerà.
find . -type d -printf '%p/\n' -or -print
Può essere
find . -print0 | xargs -0 ls -Fd
è anche un'opzione.
Da una pagina man di Solaris:
-F Contrassegna le directory con una barra (/) finale, le porte con un segno maggiore di (()), i file eseguibili con un asterisco finale (*), i file FIFO con una barra verticale finale (|), i collegamenti simbolici con una sequenza " at "sign (@), e AF_UNIX indirizzano i socket della famiglia con un segno finale uguale (=). Segue i collegamenti simbolici denominati operandi.