Znajdź zarówno zwykłe pliki, jak i katalogi

9

Jak mogę powiedzieć (jeśli mogę to powiedzieć!), Aby znaleźć pliki zarówno katalogu, jak i typu pliku?

find -type fd

To jest jak heurystyczne ciemne wieki tutaj.

James
źródło

Odpowiedzi:

12

Oto polecenie, którego możesz użyć:

find -type f -or -type d
laebshade
źródło
7
Lub find -type f -o -type ddla alternatywy zgodnej z POSIX.
manatwork
Hej, miałem z tym trochę kłopotów, kiedy uruchomiłem $ find. -type d -or -type f -i -iname "vision" nie robi dokładnie tego, czego oczekuję, czy brakuje mi czegoś innego!
James
2
-a ma pierwszeństwo przed -o, użyj nawiasów (ale unikaj ich dla powłoki). Nie ma potrzeby używania niestandardowego -lub lub -and.
Stéphane Chazelas
jeśli spróbuję `znaleźć. -type d lub -type f -name 'abc' . I get an error.. find: ścieżki muszą poprzedzać wyrażenie: `.. Wiesz, dlaczego?
alpha_989
1
@ alpha_989 brakuje -wcześniej or?
Mateusz Piotrowski
2

tl: dr

posługiwać się find . -name "*string*" -type f -o -name "*string*" -type d

wyjaśnienie

Komenda -o orcałkowicie argumentuje argumenty po ścieżce plików, na przykład find . -name "*string*" -type f -o -type doblicza find . (-name "*string*" -type f) -o (-type d). Z tego powodu musisz określić

Większość użytkowników będzie chciała czegoś, co wygląda

find . -name  "*string*" -type f -o -name "*string*" -type d

który oblicza jako

find . (-name  "*string*" -type f) -o (-name "*string*" -type d)

znajdź szczegóły składni

-name "*string*"wyszukuje nazwy zawierające ciąg znaków w stringdowolnym miejscu.

Ulad Kasach
źródło
1

Jeśli używasz GNU find, następujące rozwiązanie może ci się spodobać:

find -type d,f

Zobacz man findpo więcej szczegółów:

Aby wyszukać więcej niż jeden typ na raz, możesz podać połączoną listę liter typu oddzielonych przecinkiem ,(rozszerzenie GNU).

Mateusz Piotrowski
źródło
2
Korzystanie z GNU findwersji 4.7.0 .. Wydaje się, że nie obsługuje ,. Komunikat o błędzie mówi, żefind: Arguments to -type should contain only one letter.
alpha_989