Заставить найти шоу косую черту после каталогов?

19

Как сделать так, чтобы команда поиска показала косую черту после каталогов? Например, я хочу dirпоказать как dir/вместо dir. я используюfind . -print

Стивен
источник

Ответы:

10

Портабельно:

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добавить /после каталогов)

Жиль "ТАК - прекрати быть злым"
источник
Первая команда не печатала косые черты для меня, но вторая делает.
Стивен
15
find . \( -type d -printf "%p/\n" , -type f -print \)

Это использует команду printf для форматирования имен каталогов и стандартной печати для остальных.

Шон Дж. Гофф
источник
Я продолжаю удивляться гибкости поиска.
Шон Дж. Гофф
1
Обратите внимание, что -printfэто специфично для GNU find.
Жиль "ТАК - перестань быть злым"
Хороший ответ. Мне нравится, как findпозиционные аргументы позволяют делать расширенный вывод, как это. Однако обратите внимание, что без пробелов вокруг запятой это не сработает.
скудный
1
Основываясь на этом ответе и Жиле ', я придумал следующую упрощенную версию:find . -type d -printf '%p/\n' -or -print
Teresa e Junior
8

Может быть

find . -print0 | xargs -0 ls -Fd

вариант также.

Из справочной страницы Solaris:

-F Помечает каталоги с косой чертой (/), двери с завершающим знаком больше (>), исполняемые файлы с завершающей звездочкой (*), FIFO с завершающей вертикальной чертой (|), символические ссылки с завершающим символом " на "знак (@) и сокеты семейства адресов AF_UNIX с последующим знаком равенства (=). Следует за символическими ссылками, названными как операнды.

ddeimeke
источник
@ Жиль: Спасибо за "d" ;-)
ddeimeke
это увеличивает количество системных вызовов
Павел Полевич