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

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)


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.


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.


@Gilles: Dzięki za „d” ;-)
ddeimeke

to zwiększa liczbę wywołań systemowych
Paweł Polewicz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.