Czy ukośnik show show po katalogach?

19

Jak sprawić, by polecenie find wyświetlało ukośnik po katalogach? Na przykład chcę dirpokazać się jako dir/zamiast dir. używamfind . -print

Steven
źródło

Odpowiedzi:

10

Przenośny:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

Jeśli chcesz wyświetlić listę katalogów i plików osobno (możesz scalić dane wyjściowe przez sortowanie):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

Z GNU find zobacz odpowiedź Shawna J. Goffa .

Jeśli zaryzykujesz zniekształceniem znaków niedrukowalnych, nawet jeśli nie są one wysyłane do terminala, zobacz odpowiedź ddeimeke .

W zsh: print -rl -- **/*(DM)( Daby dołączyć pliki kropek, Maby dodać /katalogi po)

Gilles „SO- przestań być zły”
źródło
Pierwsze polecenie nie wydrukowało dla mnie końcowych ukośników, ale drugie tak.
Steven
15
find . \( -type d -printf "%p/\n" , -type f -print \)

Używa polecenia printf do formatowania nazw katalogów i drukowania standardowego dla reszty.

Shawn J. Goff
źródło
Nadal jestem zdumiony elastycznością wyszukiwania.
Shawn J. Goff,
1
Uwaga, -printfjest specyficzna dla GNU find.
Gilles „SO - przestań być zły”,
Niezła odpowiedź. Podoba mi się, w jaki sposób findargumenty pozycyjne pozwalają na tworzenie zaawansowanych wyników w ten sposób. Pamiętaj jednak, że bez spacji wokół przecinka nie będzie działać.
jimp
1
Na podstawie tej odpowiedzi i Gillesa opracowałem następującą uproszczoną wersję:find . -type d -printf '%p/\n' -or -print
Teresa e Junior
8

Może

find . -print0 | xargs -0 ls -Fd

jest również opcją.

Ze strony podręcznika Solaris:

-F Zaznacza katalogi ukośnikiem końcowym (/), drzwi znakiem końcowym większym niż (()), pliki wykonywalne z gwiazdką końcową (*), FIFO z kreską pionową końcową (|), dowiązania symboliczne z końcowym znakiem „ at ”znak (@) i gniazda rodziny adresów AF_UNIX ze znakiem równości ciągu (=). Podąża za dowiązaniami symbolicznymi nazwanymi jako operandy.

ddeimeke
źródło
@Gilles: Dzięki za „d” ;-)
ddeimeke
to zwiększa liczbę wywołań systemowych
Paweł Polewicz