Ответы:
Портабельно:
find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print
Если вы хотите перечислить каталоги и файлы отдельно (вы можете объединить вывод, отсортировав):
{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort
С помощью GNU find см . Ответ Шона Дж. Гоффа .
Если вы готовы рисковать тем, что непечатные символы будут искажены, даже если они не выводятся на терминал, см . Ответ ddeimeke .
В zsh: print -rl -- **/*(DM)
( D
включить точечные файлы, M
добавить /
после каталогов)
find . \( -type d -printf "%p/\n" , -type f -print \)
Это использует команду printf для форматирования имен каталогов и стандартной печати для остальных.
-printf
это специфично для GNU find.
find
позиционные аргументы позволяют делать расширенный вывод, как это. Однако обратите внимание, что без пробелов вокруг запятой это не сработает.
find . -type d -printf '%p/\n' -or -print
Может быть
find . -print0 | xargs -0 ls -Fd
вариант также.
Из справочной страницы Solaris:
-F Помечает каталоги с косой чертой (/), двери с завершающим знаком больше (>), исполняемые файлы с завершающей звездочкой (*), FIFO с завершающей вертикальной чертой (|), символические ссылки с завершающим символом " на "знак (@) и сокеты семейства адресов AF_UNIX с последующим знаком равенства (=). Следует за символическими ссылками, названными как операнды.