Jak mogę wydajniej korzystać z polecenia find?

15

Chciałem wiedzieć, jaki jest najlepszy sposób efektywnego użycia polecenia find?

Ogólnie używam, find [filename] [dir]co daje mi długą listę nazw plików, z których żaden nie ma żadnego związku z moim wyszukiwaniem.

Po prostu muszę znaleźć jeden plik w określonym katalogu. Jakie jest na to polecenie?

Sam007
źródło

Odpowiedzi:

24

zwykle mówisz o tym, od czego zacząć wyszukiwanie i czego szukać. Zatem składnia ścieżek do wyszukiwania i to, co tak naprawdę próbujesz znaleźć, jest inne.

Dla wspomnianego przypadku użycia załóżmy, że chcesz znaleźć passwdplik /etc:

find /etc/ -name passwd

mówisz „począwszy etc, poszukaj pliku, którego nazwa jestpasswd

jeśli nie określisz kryteriów (lub „opcji” w wyszukiwaniu wyrażeń), to co robi, rozpoczyna się od określonej przez ciebie ścieżki (ścieżek) i rekurencyjnie znajduje wszystkie pliki i katalogi poniżej. Więc opcje „filtrują” te pliki, aby zawęzić to, czego szukasz.

Znajdź wszystkie pliki JPG w dowolnym miejscu w systemie plików:

find / -name "*jpg" 

Zalecane jest stosowanie cudzysłowów w opcjach, ponieważ w przeciwnym razie rozszerzenie powłoki może powodować bóle głowy.

Znajdź dowolne pliki pdf, niezależnie od przypadku, w Dokumentach lub Pobranych:

find Documents/ Downloads/ -iname "*pdf"

Jeśli to zrobisz man findi przewiniesz w dół do TESTÓW, znajdziesz wszystkie „kryteria”, które można znaleźć, aby zawęzić wyszukiwanie. Możesz wyszukiwać pliki o określonych nazwach plików, będące własnością określonych użytkowników lub grup, posiadające określone uprawnienia do plików, określonego typu (np. -type dZnajdzie tylko katalogi, a -type ftylko zwykłe pliki, z wyłączeniem katalogów), pliki nowsze lub starsze niż określoną liczbę dni (lub minut), puste pliki, pliki wykonywalne itd.

Na stronie podręcznika find znajdziesz również sekcję AKCJE, które mogą iść po kryteriach i zostaną uruchomione przez dowolny plik spełniający wszystkie kryteria. Możesz więc findwykonywać takie czynności, jak usuwanie znalezionych plików, wykonywanie na nich dowolnych poleceń i tak dalej.

Ale oczywiście podstawowa składnia pozostaje:

find [starting path(s)] [conditions or criteria]
roadmr
źródło
dzięki, to działa świetnie. Byłem naprawdę zdezorientowany, co pomaga w prostym rozwiązaniu
Sam007,
1
+1 To miłe wprowadzenie do znalezienia, a także uczy PO, jak znaleźć dalsze informacje.
lgarzo