Wyszukiwanie plików terminal Linux – jak korzystać z komendy find

Jeśli dopiero zaczynasz swoją przygodę z administracją systemów Linux, prawdopodobnie szybko zauważysz, że wyszukiwanie plików terminal Linux jest jedną z najczęściej wykonywanych czynności. Być może zastanawiasz się, jak znaleźć dane zdjęcie, plik konfiguracyjny czy folder z projektem, skoro z poziomu terminala widzisz tylko tekst i ścieżki do katalogów. Dobra wiadomość, wbudowana komenda find potrafi rozwiązać większość problemów związanych z wyszukiwaniem plików i katalogów. Jest elastyczna i umożliwia precyzyjne filtrowanie wyników. W tej obszernej instrukcji pokażę ci krok po kroku, jak skutecznie korzystać z komendy find, żebyś mógł sprawnie poruszać się po swoim systemie i oszczędził mnóstwo czasu.

Poniższy przewodnik łączy wyjaśnienia i praktyczne przykłady. Dzięki temu, nawet jeśli dotychczas korzystałeś z graficznych narzędzi do wyszukiwania, szybko odkryjesz zalety pracy z terminalem. Znajdziesz tu również wskazówki dotyczące wyszukiwania według nazw, rozmiarów czy daty modyfikacji, a nawet sposoby na wykonywanie akcji (takich jak kasowanie czy zmiana uprawnień) na wyszukanych elementach. Jesteś gotowy? Zaczynajmy.

Poznaj komendę find

Komenda find to potężne narzędzie w twoim arsenale podczas zarządzania plikami w systemie Linux. Należy do pakietu GNU findutils, który jest najczęściej domyślnie zainstalowany w popularnych dystrybucjach, takich jak Ubuntu czy Fedora. Oto kilka cech, które sprawiają, że find jest tak praktyczny:

  • Przeczesuje katalog i wszystkie jego podkatalogi, dzięki czemu nie musisz szukać ręcznie w każdym folderze.
  • Pozwala na wyszukiwanie według rozmaitych kryteriów, na przykład nazwy pliku, daty ostatniej modyfikacji, rozmiaru czy właściciela.
  • Działa w czasie rzeczywistym, co oznacza, że wykryje nawet nowo utworzone czy ostatnio zmienione pliki (w przeciwieństwie do narzędzi bazujących na indeksach, np. locate).
  • Umożliwia wykonywanie akcji na każdym z plików pasujących do wzorca wyszukiwania, na przykład automatyczne kasowanie lub zmiana uprawnień.

Najprostsza postać komendy find wygląda tak:

find [ścieżka] [opcje] [kryteria wyszukiwania] [akcja]

W najpopularniejszym wariancie wystarczy wskazać ścieżkę i kryterium wyszukiwania, a find od razu poda listę wyników. Jeżeli nie wskażesz konkretnego katalogu, narzędzie zacznie wyszukiwanie w bieżącym katalogu (oznaczanym kropką .). Dobrze zapamiętać to domyślne zachowanie, bo nie zawsze musisz wpisywać pełną ścieżkę.

Może brzmi to skomplikowanie, ale spokojnie, przejdziemy przez najważniejsze zastosowania krok po kroku.

Wyszukiwanie po nazwie

Czasami chcesz po prostu znaleźć plik o konkretnej nazwie. Wtedy najwygodniejszą opcją jest użycie parametru -name. Załóżmy, że szukasz pliku konfiguracyjnego o nazwie rc.conf:

find /etc -name "rc.conf"

Ta komenda przejrzy katalog /etc, a także wszystkie jego podkatalogi, i wypisze ścieżkę do pliku znajdowanego pod nazwą rc.conf. Jeśli nie jesteś pewien, w którym katalogu przebywa plik, możesz uruchomić:

find / -name "rc.conf"

To oznacza przeszukiwanie całego systemu, ale może potrwać znacznie dłużej. Dobra wskazówka, jeśli wiesz, że dany plik raczej leży w /home, to nie ma sensu tracić czasu na przeczesywanie /usr i /var.

Ważne drobiazgi:

  • Domyślnie -name jest wrażliwe na wielkość liter, więc "Readme.md" nie zostanie znalezione, gdy wpiszesz "readme.md".
  • Jeśli chcesz pominąć rozróżnianie wielkości liter, użyj -iname. Wtedy "Readme.md" i "readme.md" będą traktowane tak samo.

Wzorce z gwiazdkami

W polu nazwy możesz używać znaków specjalnych. Przykładowo, aby znaleźć wszystkie pliki z rozszerzeniem .txt, wpisz:

find . -name "*.txt"

Gwiazdka oznacza dowolny ciąg znaków, więc *.txt będzie pasowało do plików takich jak mynotes.txt, data.txt, testfile.txt i tak dalej.

Wyszukiwanie według rozmiaru

Często pojawia się potrzeba odnalezienia plików, które zajmują zbyt wiele miejsca. Dzięki parametrowi -size narzędzie find błyskawicznie wylistuje pliki większe lub mniejsze niż podany rozmiar.

  • find /home -size +1G – wyszukuje pliki większe niż 1 GB.
  • find /var -size -100M – wyszukuje pliki mniejsze niż 100 MB.

Pamiętaj, że znajomość jednostek jest kluczowa:

  • G oznacza gigabajty,
  • M oznacza megabajty,
  • K oznacza kilobajty.

Oprócz operatorów + i - możesz użyć zwykłego wyszukiwania, np. =100M, aby znaleźć pliki, które zajmują dokładnie 100 MB, choć w praktyce takie precyzyjne dopasowanie bywa rzadkie.

Dobrym pomysłem jest od czasu do czasu sprawdzać, czy w systemie nie ma „zjadaczy” miejsca. W szczególności, jeśli brakuje ci wolnej przestrzeni, find pomaga szybko zlokalizować ogromne archiwa, pliki logów czy przestarzałe wersje projektów. Według danych z branży hostingowej (2025), często to właśnie zbędne logi lub duplikaty archiwów są głównym powodem szybkiego zapełniania się dysku.

Szukaj plików według daty

W systemach Linux mamy atrybuty takie jak data ostatniej modyfikacji (mtime), data ostatniego użycia (atime) czy data ostatniej zmiany metadanych (ctime). Można je sprawdzić za pomocą komendy find, ustawiając odpowiednią flagę. Oto przykłady:

  • -mtime n – szuka plików zmodyfikowanych równo n dni temu.
  • -mtime +n – szuka plików starszych niż n dni.
  • -mtime -n – szuka plików nowszych niż n dni (np. pliki z ostatniego tygodnia).

Zatem:

find . -name "*.log" -mtime -7

Wyszuka logi z ostatnich 7 dni w bieżącym katalogu i jego podkatalogach. Dzięki temu łatwo wychwycisz najnowsze zmiany w katalogu z dziennikami. Dobra wiadomość, jeśli chcesz wyśledzić jedynie pliki, które zostały zmodyfikowane od konkretnego punktu w czasie (na przykład od kiedy zmieniłeś ważny plik konfiguracyjny), możesz użyć -newer, by porównać daty modyfikacji:

find . -newer stary_plik.txt

Polecenie wyświetli wszystkie pliki nowsze niż stary_plik.txt, co pozwala szybko przejrzeć, co się zmieniło po ostatniej poprawce lub aktualizacji.

Opiekowanie się logami i archiwami

Na serwerach produkcyjnych zwykle przyrastają ogromne ilości logów. Automatyczne skrypty rotujące pliki logów często się przydają. Gdy jednak nie masz takiego narzędzia albo nie jest ono poprawnie skonfigurowane, find potrafi cię uratować. Możesz go użyć do identyfikacji starych logów i automatycznego kasowania za pomocą opcji -exec czy nawet -delete (o tym za chwilę), optymalizując w ten sposób przestrzeń dyskową.

Określ uprawnienia i właścicieli

Linux stosuje konkretne modele uprawnień i własności do kontroli dostępu do plików. Możesz użyć parametru -perm, aby wyszukać pliki z dokładnie określonym trybem dostępu. Przykładowo:

find . -perm 400

Wyświetli wszystkie pliki z prawem tylko do odczytu (dla właściciela). Jeśli szukasz nieco bardziej złożonego ustawienia, np. 664, to wpisujesz -perm 664. Warto pamiętać, by testować najpierw zakres wyników, zanim zaczniesz wykonywać masowe operacje zmiany uprawnień.

Podobnie, parametry -user i -group pozwalają ci znaleźć pliki należące do danej osoby lub grupy. Przykładowo:

find /home -user marek

Pokaże wszystkie pliki należące użytkownikowi marek w katalogu domowym. A jeśli chcesz przejrzeć pliki należące do konkretnej grupy, użyj:

find / -group admin

Takie wyszukiwanie przydaje się, gdy musisz zachować porządek i upewnić się, że właściwi użytkownicy lub procesy mają dostęp do odpowiednich plików.

Umiejętnie korzystaj z -exec

Jedną z najbardziej praktycznych funkcji find jest opcja -exec, która pozwala uruchamiać inną komendę na każdym znalezionym pliku. Przykładowo, jeśli chcesz dodać uprawnienia do odczytu dla innych użytkowników do wszystkich plików o nazwie rc.conf:

find . -name "rc.conf" -exec chmod o+r '{}' \;

Wynikiem będzie zmiana uprawnień dla każdego napotkanego pliku rc.conf w bieżącym katalogu i jego podkatalogach. Fragment '{}' to placeholder, który find zastępuje aktualnym wynikiem wyszukiwania (konkretną ścieżką pliku). Natomiast \; sygnalizuje koniec polecenia.

Masz tu dużą swobodę działania. Możesz skasować, skopiować, przenieść, zmienić uprawnienia, a nawet przekazać plik do innego programu. Koniecznie jednak pamiętaj o ostrożności. Komenda -exec działa bez dodatkowego potwierdzenia, więc jedno błędne polecenie może przynieść poważne szkody w systemie. Dobrze jest przed końcowym zatwierdzeniem wyświetlić listę plików, na których chcesz operować, i upewnić się, że wszystko się zgadza.

Przykład z grep

Zdarza się, że chcesz wyszukać nie tylko plik, ale i konkretny tekst w jego zawartości. Możesz wówczas połączyć find z grep, dzięki czemu prześledzisz tekst w wielu plikach naraz:

find . -type f -exec grep "SŁOWO_KLUCZ" '{}' \; -print

Ta konstrukcja spowoduje przeszukanie plików w bieżącym katalogu. Jeśli grep znajdzie zadany ciąg znaków, wyświetli go, a dzięki -print dowiesz się, w którym pliku wystąpiło dopasowanie. To świetny sposób na szybką analizę dużej liczby plików w poszukiwaniu konkretnej linii czy ustawienia.

Wykorzystaj wyrażenia regularne

Zdarza się, że potrzebujesz nawet bardziej zaawansowanych filtrów nazwy pliku niż to, co oferuje prosta gwiazdka (*). Wtedy z pomocą przychodzi opcja -regex, która pozwala użyć wyrażeń regularnych (ang. RegEx). Przykład:

find . -regex './w.*'

Ta komenda wyświetli wszystkie pliki i foldery w bieżącym katalogu, których nazwa zaczyna się na literę „w”. Wyrażenia regularne dają olbrzymią elastyczność, choć początkowo mogą wydawać się trudne. Jeśli jednak dopiero zaczynasz przygodę z RegEx, spróbuj prostych wzorców: np. wyszukiwanie plików z określoną końcówką lub z pasującym fragmentem nazwy. Z czasem przekonasz się, jak wiele zyskujesz, mając takie narzędzie pod ręką.

Dopasowanie całej ścieżki

Ważne, by wiedzieć, że find z opcją -regex domyślnie sprawdza całą ścieżkę pliku, licząc od katalogu startowego. W związku z tym pattern ./w.* jest konieczny, ponieważ kropka i ukośnik (./) to część ścieżki do wszystkich plików w bieżącym katalogu. Jeśli chcesz dopasować tylko samą nazwę pliku, musisz użyć opcji -regextype posix-extended lub innych metod, aby uprościć sobie wzorce.

Zarządzaj plikami zbiorowo

Wspominaliśmy już, że find potrafi nie tylko wyszukać pliki, ale też je kasować dzięki opcji -delete. Przykład:

find /var/log -name "*.old" -delete

Ten wariant to szybka metoda na usunięcie wszystkich plików z rozszerzeniem .old w katalogu /var/log. Pamiętaj jednak, że ta operacja działa bez potwierdzenia. Nie ma tu kosza, jak w środowisku graficznym. Raz usunięte pliki przepadają bezpowrotnie. Dlatego warto najpierw przetestować listę wyników:

find /var/log -name "*.old"

Dopiero gdy jesteś pewien, że wszystkie znalezione pliki mogą zostać usunięte, dopisz na końcu -delete. Zapobiegnie to przypadkowym stratom.

Scenariusz zbiorczego usuwania

Bywa, że na serwerze występują fragmenty starych plików, do których nikt już nie potrzebuje dostępu. Zakładając, że wiesz, iż są to pliki .bak nieużywane od ponad 30 dni, możesz odpalić:

find /home/archiwa -name "*.bak" -mtime +30 -delete

Komenda usunie wszystkie pliki o rozszerzeniu .bak, które nie były modyfikowane od 30 dni, z katalogu /home/archiwa oraz podkatalogów. To może znacząco odciążyć belejące katalogi i oszczędzić miejsce na dysku. Dobra wskazówka, zawsze sprawdzaj, czy te pliki rzeczywiście nie są już potrzebne.

Podsumowanie i następny krok

Zarówno proste wyszukiwanie plików terminalu Linux po nazwie, jak i zaawansowane filtry według rozmiaru, właściciela czy daty, stają się znacznie jaśniejsze, gdy wiesz, jak elastycznym narzędziem jest find. Przez cały artykuł zobaczyłeś konkretne przykłady i komendy, które pozwolą ci:

  1. Odnaleźć pliki po nazwie przy użyciu -name lub -iname.
  2. Przeszukać system według konkretnych rozmiarów (np. +1G).
  3. Wskazać pliki zmodyfikowane w określonym czasie (np. -mtime -7).
  4. Wyszukiwać i filtrować pliki według właściciela lub grupy (np. -user marek).
  5. Korzystać z opcji -exec do masowych operacji, takich jak zmiana uprawnień czy kasowanie.
  6. Pracować z wyrażeniami regularnymi (np. -regex) dla bardziej złożonych wzorców.
  7. Usuwać zbiorczo niepotrzebne pliki (z użyciem -delete).

Zachęcam cię, żebyś już teraz otworzył terminal i przetestował kilka najprostszych komend, takie jak:

find . -name "*.txt"

Zobaczysz, ile plików tekstowych kryje się w bieżącym katalogu. Z każdym kolejnym krokiem zyskasz pewność, że wyszukiwanie plików nie musi być mieszanką zgadywania i klikania w niekończące się foldery. Gdy nauczysz się podstaw find, znacznie usprawnisz swoją pracę, zwłaszcza kiedy zarządzasz setkami czy tysiącami plików. Dobra wiadomość, to narzędzie jest już w twoim systemie, wystarczy odrobina praktyki, by zyskać nad nim biegłość.

Miłej nauki i powodzenia w odkrywaniu kolejnych możliwości komendy find! Możesz być pewien, że jeśli chodzi o wydajne przeszukiwanie plików i automatyzację, to jedno z najskuteczniejszych rozwiązań, jakie oferuje Linux. A gdy staniesz się ekspertem, docenisz jeszcze bardziej tę elastyczność, szczególnieś kiedy zechcesz tworzyć własne skrypty do zaawansowanych zadań administracyjnych. Powodzenia, trzymam kciuki za twoje przyszłe projekty!