Réponses:
Portablement:
find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print
Si vous souhaitez répertorier les répertoires et les fichiers séparément (vous pouvez fusionner la sortie en triant):
{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort
Avec GNU find, voir la réponse de Shawn J. Goff .
Si vous êtes prêt à risquer que des caractères non imprimables soient mutilés même lorsqu'ils ne sont pas sortis sur un terminal, consultez la réponse de ddeimeke .
Dans zsh: print -rl -- **/*(DM)
( D
pour inclure les fichiers dot, M
pour ajouter un /
répertoire after)
find . \( -type d -printf "%p/\n" , -type f -print \)
Cela utilise la commande printf pour formater les noms de répertoire et l'impression standard pour le reste.
-printf
est spécifique à GNU find.
find
les arguments positionnels lui permettent de faire une sortie avancée comme celle-ci. Cependant, notez que sans les espaces autour de la virgule, cela ne fonctionnera pas.
find . -type d -printf '%p/\n' -or -print
Peut être
find . -print0 | xargs -0 ls -Fd
est également une option.
À partir d'une page de manuel Solaris:
-F Marque les répertoires avec une barre oblique de fin (/), les portes avec un signe supérieur à (()), les fichiers exécutables avec un astérisque de fin (*), les FIFO avec une barre verticale de fin (|), les liens symboliques avec une fin " à "signe (@), et AF_UNIX adresse les sockets de famille avec un signe égal à la fin (=). Suit les liens symboliques nommés comme opérandes.