Respostas:
Portably:
find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print
Se você deseja listar diretórios e arquivos separadamente (pode mesclar a saída classificando):
{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort
Com o GNU find, veja a resposta de Shawn J. Goff .
Se você estiver disposto a arriscar caracteres não imprimíveis serem mutilados, mesmo quando não estiver enviando para um terminal, consulte a resposta do ddeimeke .
No zsh: print -rl -- **/*(DM)
( D
para incluir arquivos de ponto, M
para adicionar um /
diretório posterior)
find . \( -type d -printf "%p/\n" , -type f -print \)
Isso usa o comando printf para formatar nomes de diretório e impressão padrão para o restante.
-printf
é específico para o GNU find.
find
os argumentos posicionais permitem que ele produza resultados avançados como este. No entanto, observe que, sem os espaços ao redor da vírgula, ele não funcionará.
find . -type d -printf '%p/\n' -or -print
Talvez
find . -print0 | xargs -0 ls -Fd
é uma opção também.
Em uma página de manual do Solaris:
-F Marca diretórios com uma barra final (/), portas com um sinal de final maior que (>), arquivos executáveis com um asterisco final (*), FIFOs com uma barra vertical final (|), links simbólicos com um final " no sinal "(@) e AF_UNIX endereça os soquetes da família com um sinal de igual a final (=). Segue links simbólicos nomeados como operandos.