Зробити пошук показу косою рискою після каталогів?


19

Як я можу змусити команду find показати косу рису після каталогів? Наприклад, я хочу 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 знайдіть відповідь Шона Дж. Гоффа .

Якщо ви готові ризикувати, щоб недруковані символи були замуровані, навіть не виходячи на термінал, див . Відповідь ddeimeke .

У zsh: print -rl -- **/*(DM)( Dвключити крапкові файли, Mдодати /каталоги після)


Перша команда не надрукувала косої косої риси для мене, але друга -.
Стівен

15
find . \( -type d -printf "%p/\n" , -type f -print \)

При цьому використовується команда printf для форматування імен каталогів та стандартного друку для решти.


Я продовжую дивуватися гнучкості пошуку.
Шон Дж. Гофф

1
Зауважте, що -printfхарактерно для знаходження GNU.
Жил "ТАК - перестань бути злим"

Гарна відповідь. Мені подобається, як findпозиційні аргументи дозволяють йому робити такий просунутий результат. Однак зауважте, що без пробілів навколо коми це не вийде.
jimp

1
Виходячи з цієї відповіді та Жиля, я придумав таку спрощену версію:find . -type d -printf '%p/\n' -or -print
Teresa e Junior

8

Можливо

find . -print0 | xargs -0 ls -Fd

це також варіант.

На сторінці чоловіка Solaris:

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


@Gilles: Дякую за "d" ;-)
ddeimeke

це збільшує кількість системних
дзвінків
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.