Po prostu brakuje predykatu, który mówi, czego szukasz (np -name
.)
Aby znaleźć w katalogu domowym według nazwy:
find ~ -name \*.pdf
Zauważ, że symbol wieloznaczny *
musi być poprzedzony znakiem ucieczki, aby powłoka go nie zinterpretowała, zanim znajdzie ją w zasięgu ręki. Używanie '*.pdf'
i "*.pdf"
będzie miało taki sam efekt jak \*.pdf
.
Aby znaleźć bez rozróżniania wielkości liter:
find ~ -iname \*.pdf
Aby przyciąć wyniki tylko do plików (wyrażenie nazwy prawdopodobnie zajmie się tym za Ciebie, ale na wypadek, gdybyś miał jakieś dziwnie nazwane katalogi):
find ~ -type f -iname \*.pdf
Aby upewnić się, że find podąża za dowiązaniami symbolicznymi (zwykle chcę to zrobić podczas wyszukiwania):
find ~ -follow -type f -iname \*.pdf
Aby zrobić coś ze znalezionymi plikami: możesz zrzucić to do pliku za pomocą przekierowania standardowego (np. Tack na > filename
końcu) lub użyć -exec
opcji, aby uruchomić polecenie (szczegóły na stronie man). Ten ostatni uruchamia jednak polecenie dla każdego pliku na raz. często jest szybsze, aby xargs
polecenie przekazało znalezione pliki jako argumenty do innego polecenia, jednocześnie lub dużych fragmentów naraz. Na przykład dla ad-hoc (ale nieindeksowanego) greps poprzez pliki nagłówkowe:
find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"
I ostatnie rozszerzenie, aby ostatnie polecenie działało poprawnie, jeśli masz pliki i katalogi ze spacjami:
find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"
find
jest daleki od bezużytecznego.