Polecenie find w systemie Linux służy do wyszukiwania plików i katalogów w określonych katalogach na podstawie różnych kryteriów. Polecenie to jest jednym z najpotężniejszych i najbardziej rozpowszechnionych narzędzi w systemie Linux.
Podstawowy format polecenia find jest następujący:
find [path] [expression]
gdzie:
path to ścieżka do katalogu, w którym mają być wyszukiwane pliki (domyślnie polecenie find przeszukuje bieżący katalog i wszystkie jego podkatalogi);
wyrażenie to wyrażenie definiujące kryteria wyszukiwania plików.
Poniżej przedstawiono niektóre z najczęstszych kryteriów wyszukiwania plików, które mogą być używane w wyrażeniu polecenia find:
-name: wyszukiwanie plików według nazwy. Na przykład:
find /home/user -name myfile.txt
-type: wyszukiwanie plików określonego typu (na przykład f dla plików zwykłych lub d dla katalogów). Na przykład:
find /home/user -type f
-size: wyszukiwanie plików według rozmiaru. Na przykład:
find /home/user -size +10M
-mtime: wyszukiwanie plików według czasu ostatniej modyfikacji. Na przykład:
find /home/user -mtime -7
-user i -group: wyszukiwanie plików według właściciela i grupy. Na przykład:
find /home/user -user bob -group users
Można użyć operatorów logicznych -and, -or i -not, aby połączyć wiele kryteriów wyszukiwania w jedno wyrażenie.
Na przykład poniższe polecenie znajdzie wszystkie pliki w katalogu /home/user, które zostały zmodyfikowane w ciągu ostatnich 7 dni i są większe niż 10 megabajtów:
find /home/user -type f -mtime -7 -size +10M
Polecenie find umożliwia również wykonywanie różnych działań na znalezionych plikach przy użyciu opcji -exec. Na przykład, można usunąć wszystkie pliki, które zostały zmodyfikowane ponad 30 dni temu za pomocą następującego polecenia:
find /home/user -type f -mtime +30 -exec rm {} ;
Tutaj opcja -exec uruchamia polecenie rm dla każdego znalezionego pliku i używa {} do zastąpienia nazwy pliku w poleceniu.
Polecenie find jest potężnym narzędziem do wyszukiwania plików i katalogów w systemie Linux, które może być używane do wykonywania różnych zadań związanych z zarządzaniem.
Polecenie find obsługuje wiele innych opcji, które można wykorzystać do dokładniejszego wyszukiwania plików:
-iname: wyszukiwanie plików według nazwy bez względu na wielkość liter. Na przykład:
find /home/user -iname myfile.txt
-regex: wyszukiwanie plików, których nazwy pasują do podanego wyrażenia regularnego. Na przykład:
find /home/user -regex ".*.txt$"
-maxdepth i -mindepth: ograniczają głębokość wyszukiwania plików w podkatalogach. Na przykład:
find /home/user -maxdepth 2 -type f
-prune: wyklucza określone katalogi z wyszukiwania. Na przykład:
find /home/user -path /home/user/excluded -prune -o -type f -print
-print: wypisuje listę znalezionych plików na standardowe wyjście. Na przykład:
find /home/user -type f -print
find obsługuje również wyszukiwanie plików według różnych atrybutów, takich jak uprawnienia, atrybuty plików, etykiety SELinux i inne. Więcej informacji na temat tych opcji można znaleźć w dokumentacji polecenia find.
Polecenie może wyszukiwać pliki i katalogi w całym systemie plików, co może zająć dużo czasu i zasobów. Dlatego ważne jest, aby zachować ostrożność podczas korzystania z tego polecenia i upewnić się, że kryteria wyszukiwania są ustawione poprawnie, aby uniknąć znalezienia niepotrzebnych plików lub błędów w systemie.