Nie ma rzeczy niemożliwych, są tylko trudne do znalezienia.
– Moje motto, gdy po raz 10. szukam pliku config.ini
find – Detektyw na żywo!
find to Twój osobisty Sherlock Holmes, który przeszukuje system plików w czasie rzeczywistym. Jest dokładniejszy i oferuje pełną kontrolę nad kryteriami wyszukiwania oraz akcjami na znalezionych plikach, ale… jest wolniejszy, bo za każdym razem od nowa indeksuje.
Podstawowa składnia: find [katalog] [warunek] [akcja]
find [katalog] [warunek] [akcja]- [katalog]: Gdzie ma zacząć szukać? (np. /home, /var/log, /)
- [warunek]: Czego szukać? (np. -name, -type, -size)
- [akcja]: Co zrobić ze znalezionym plikiem? (np. -print, -delete, -exec)
Szukanie po nazwie: Masz imię? Znajdę Cię!
# Znajdź plik o nazwie "mojplik.txt" w katalogu /home
find /home -name "mojplik.txt"
# Ignoruj wielkość liter (MoJplik.txt, mojplik.txt – wszystko jedno!)
find /home -iname "MoJplik.txt"
# Użyj gwiazdki (`*`) jako wzorca (np. wszystkie pliki .log w /var/log)
find /var/log -name "*.log"
# Szukaj tylko plików (`-type f`) lub tylko katalogów (`-type d`)
find /home -type f -name "*.conf"
find /home -type d -name "backup"Szukanie po właściwościach: Rozmiar, data, właściciel – wszystko się liczy!
# Pliki większe niż 100MB (`+` oznacza "większe niż", `M` to megabajty)
find / -size +100M
# Pliki zmodyfikowane w ostatnich 7 dniach (`-7` oznacza "mniej niż 7 dni temu")
find /var -mtime -7
# Pliki, do których ostatnio dostęp uzyskano w ciągu ostatnich 24 godzin (`-1` oznacza "mniej niż 1 dzień temu")
find /var -atime -1
# Pliki należące do konkretnego użytkownika (np. "ubikone")
find /home -user ubikone
# Pliki z konkretnymi uprawnieniami (np. `644`)
find /etc -perm 644Łączenie warunków: Bądź precyzyjny!
Możesz łączyć wiele warunków za pomocą operatorów.
# AND (domyślnie, nie trzeba nic pisać): pliki .log ORAZ większe niż 10MB
find /var -name "*.log" -size +10M
# OR (`-o`): pliki .conf LUB .cfg
find / -name "*.conf" -o -name "*.cfg"
# NOT (`-not` lub `!`): wszystkie pliki OPRÓCZ tych z rozszerzeniem .tmp
find /home -not -name "*.tmp"
find /home ! -name "*.bak"locate – Radar błyskawiczny (ale z bazą danych)!
locate to superszybki radar. Nie przeszukuje systemu plików w czasie rzeczywistym, tylko korzysta ze wstępnie zbudowanej bazy danych (zazwyczaj aktualizowanej raz dziennie przez updatedb). Jest błyskawiczny, ale może nie widzieć najnowszych plików.
Podstawowe użycie: “Gdzieś to widziałem…”
# Zainstaluj (jeśli nie masz, zazwyczaj w pakiecie `mlocate`)
sudo apt install mlocate # Debian/Ubuntu
sudo dnf install mlocate # RHEL/Fedora
# Zbuduj bazę danych (musisz być rootem, uruchamiane raz dziennie przez crona)
sudo updatedb
# Szukaj pliku "mojplik" – wynik dostajesz w mgnieniu oka
locate mojplikUWAGA: locate nie widzi plików stworzonych po ostatnim uruchomieniu updatedb! Jeśli czegoś nie znajdujesz, najpierw zaktualizuj bazę danych (sudo updatedb). To jest jak szukanie czegoś w katalogu bibliotecznym, który jest aktualizowany tylko raz dziennie.
Zaawansowane opcje locate: Dokładniej proszę!
# Ignoruj wielkość liter
locate -i mojplik
# Pokaż tylko istniejące pliki (domyślnie `locate` może pokazać pliki, które zostały usunięte od czasu ostatniego `updatedb`)
locate -e mojplik
# Ogranicz liczbę wyników do 10
locate -l 10 mojplik
# Wyświetl tylko nazwy plików bez ścieżki
locate -b mojplikPraktyczne przykłady z bezpieczeństwa: Znajdź intruza!
Znajdź pliki z hasłami w konfiguracji: Kto tu trzyma klucze?!
# Znajdź pliki zawierające słowo "password" (niebezpieczne, ale szybkie!)
find / -type f -exec grep -l "password" {} \; 2>/dev/null | head -20
# Lepsza wersja (szybsza i bardziej efektywna z `xargs`) – szukaj tylko w plikach .conf w /etc
find /etc -type f -name "*.conf" | xargs grep -l "password" 2>/dev/nullWykryj pliki z SUID/SGID: Potencjalne luki!
Pliki z ustawioną flagą SUID/SGID mogą być użyte do eskalacji uprawnień. To must-check w każdym audycie!
# Znajdź pliki z ustawioną flagą SUID (`-4000`) – każdy może je uruchomić z uprawnieniami właściciela
find / -perm -4000 2>/dev/null
# Znajdź pliki z ustawioną flagą SGID (`-2000`) – uruchamiane z uprawnieniami grupy
find / -perm -2000 2>/dev/null
# Znajdź pliki, do których każdy ma prawo zapisu (`-002`) – potencjalne miejsce na wrzucenie backdoora
find / -perm -002 2>/dev/null | head -20Znajdź ostatnio zmodyfikowane pliki: Kto grzebał w systemie?
# Pliki zmienione w ostatniej godzinie (`-mmin -60`) w katalogu /var/www
find /var/www -mmin -60
# Pliki nowe (zmodyfikowane w ciągu ostatniego dnia) w /tmp
find /tmp -mtime -1
# Katalogi z uprawnieniami 777 (każdy może wszystko) – duża czerwona flaga!
find / -type d -perm 777 2>/dev/nullCzyszczenie starych plików (bezpiecznie!): Sprzątamy śmieci!
# NAJPIERW sprawdź, CO usuniesz! Użyj `-ls` do wyświetlenia szczegółów.
find /tmp -type f -atime +30 -ls
# DOPIERO POTEM usuń (z `-delete`) – ostrożnie!
find /tmp -type f -atime +30 -deletePorównanie find vs locate: Kiedy którego używać?
| Cecha | find | locate |
|---|---|---|
| Szybkość | Wolniejszy (przeszukuje na żywo) | Błyskawiczny (korzysta z bazy danych) |
| Baza danych | Nie | Tak (aktualizowana przez updatedb) |
| Czas realny | Tak (zawsze aktualne wyniki) | Nie (wyniki sprzed ostatniej aktualizacji bazy) |
| Filtry/Akcje | Pełne (po nazwie, rozmiarze, dacie, akcje) | Ograniczone (głównie po nazwie/wzorcu) |
| Zastosowanie | Precyzyjne szukanie, akcje na plikach | Szybkie odnalezienie pliku po nazwie |
Podsumowanie praktyczne: Niech moc będzie z Tobą!
Znasz już obu mistrzów wyszukiwania. Używaj ich mądrze!
- locate – gdy potrzebujesz błyskawicznie znaleźć plik, którego nazwę znasz (lub jej część), i nie potrzebujesz super aktualnych wyników (np. szukasz httpd.conf).
- **find** – gdy potrzebujesz dokładności, świeżych wyników, skomplikowanych filtrów (np. pliki większe niż X, zmodyfikowane w ciągu Y dni), lub chcesz wykonać jakąś akcję na znalezionych plikach.
# Twój nowy zestaw do szukania logów zmodyfikowanych w ostatnim tygodniu:
find /var/log -name "*.log" -mtime -7 | head -10PRO TIP: ZAWSZE używaj -ls z find do podglądu wyników, zanim wykonasz akcję zmieniającą system (np. -delete, -exec rm {} \;). Lepiej zobaczyć, co się usunie, niż potem płakać.
Kolejny odcinek: ps + htop – zaglądniemy pod maskę systemu i zobaczymy, co tak naprawdę dzieje się z procesami. Zostań z nami!