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


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 с последующим знаком равенства (=). Следует за символическими ссылками, названными как операнды.


@ Жиль: Спасибо за "d" ;-)
ddeimeke

это увеличивает количество системных вызовов
Павел Полевич
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.