.\" -*- coding: UTF-8 -*-
.\" -*- nroff -*-
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH FIND 1   
'\" t
.SH NAZWA
find \- szuka plików w drzewie katalogów
.SH SKŁADNIA
\fBfind\fP [\fB\-H\fP] [\fB\-L\fP] [\fB\-P\fP] [\fB\-D\fP \fIopcje\-debugowania\fP]
[\fB\-O\fP\fIpoziom\fP] [\fIpunkt\-początkowy\fP...] [\fIwyrażenie\fP]
.
.SH OPIS
Ta strona podręcznika man opisuje wersję GNU programu \fBfind\fP.  GNU \fBfind\fP
przeszukuje drzewo katalogowe, zakorzenione w każdej z podanych punktów
początkowych. Wykonuje przy tym podane wyrażenie od lewej do prawej, zgodnie
z zasadami priorytetów (rozdział OPERATORY), aż do ustalenia wyniku (lewa
strona jest fałszywa dla operacji \fIand\fP, a prawdziwa dla \fIor\fP), co
powoduje przejście do następnej nazwy pliku. Jeśli nie podano punktu
początkowego, przyjmuje się ".".
.PP
W przypadku używania \fBfind\fP w środowisku, w którym istotne jest
bezpieczeństwo (np. przy przeszukiwaniu katalogów, które są zapisywalne dla
innych użytkowników), należy zapoznać się z rozdziałem "Security
Considerations" w dokumentacji findutils, pod nazwą \fBFinding Files\fP. Dokument ten (w języku angielskim) jest bardziej szczegółowy i
opisowy niż niniejsza strona podręcznika systemowego, więc może okazać się
przydatniejszym źródłem informacji.
.
.SH OPCJE
Opcje \fB\-H\fP, \fB\-L\fP i \fB\-P\fP kontrolują sposób traktowania dowiązań
symbolicznych. Kolejne argumenty wiersza poleceń powinny być plikami lub
katalogami do przeszukania, aż do pierwszego argumentu rozpoczynającego się
znakiem "\-" albo argumentu "(" lub "!". Argumenty te (razem z następnymi) są
rozpoznawane jako wyrażenie opisujące to, co ma zostać przeszukane. Jeśli
nie zostanie podana ścieżka, użyty będzie bieżący katalog. W przypadku braku
wyrażenia, używane jest domyślne wyrażenie \fB\-print\fP (lecz wówczas i tak
zapewne lepsze byłoby skorzystanie z \fB\-print0\fP).
.PP
Niniejsza strona podręcznika opisuje "opcje" w liście wyrażeń. Opcje te
kontrolują zachowanie \fBfind\fP, lecz są podane zaraz za ostatnią nazwą
ścieżkową. Z kolei pięć "prawdziwych" opcji (\fB\-H\fP, \fB\-L\fP, \fB\-P\fP, \fB\-D\fP i
\fB\-O\fP) musi pojawić się przed ścieżką, oczywiście jeśli okażą się
potrzebne. Podwójny dywiz \fB\-\-\fP może teoretycznie posłużyć do
zasygnalizowania, że pozostałe argumenty nie są opcjami, jednak w praktyce
to nie działa zbyt dobrze ze względu na sposób, w jaki \fBfind\fP określa
koniec kolejnych argumentów ścieżkowych: robi to odczytując je do momentu
pojawienia się argumentu wyrażenia (które również zaczyna się od "\-"). Zatem
jeśli argument ścieżki zaczynałby się od "\-", to \fBfind\fP potraktowałby go
jako argument wyrażenia. Z tego powodu, aby zapewnić, że wszystkie punkty
początkowe są prawidłowo interpretowane, a w szczególności aby uniknąć
sytuacji, gdy wieloznaczniki rozwinięte przez wywołującą powłokę zostałyby
potraktowane jako argumenty wyrażeń, bezpieczniej jest albo poprzedzać
wieloznaczniki lub dwuznaczne nazwy ścieżek znakami "./", albo podawać
ścieżki jako absolutne, zaczynające się od "/". Alternatywnym, choć
nieprzenośnym, zwykle bezpiecznym sposobem przekazywania dowolnych punktów
początkowych wyszukiwań do \fBfind\fP, jest korzystanie z opcji GNU
\fB\-files0\-from\fP

.IP \fB\-P\fP
Nigdy nie podąża za dowiązaniami symbolicznymi. Jest to zachowanie
domyślne. Gdy \fBfind\fP sprawdza lub wypisuje informacje o plikach, a jest on
dowiązaniem symbolicznym, to użyta informacja powinna być wzięta z
właściwości samego dowiązania symbolicznego.

.IP \fB\-L\fP
Podąża za dowiązaniami symbolicznymi. Gdy \fBfind\fP sprawdza lub wypisuje
informacje o plikach, to powinny być one wzięte z właściwości pliku, na
który wskazuje dowiązanie symboliczne, a nie z samego dowiązania (chyba, że
jest to zerwane dowiązanie symboliczne lub \fBfind\fP nie może sprawdzić pliku,
na który wskazuje dowiązanie). Użycie tej opcji implikuje \fB\-noleaf\fP. Jeśli
użyje się później \fB\-P\fP, to \fB\-noleaf\fP wciąż będzie działać. Jeśli działa
\fB\-L\fP, a \fBfind\fP podczas wyszukiwania odkryje dowiązanie symboliczne do
podkatalogu, to przeszukany zostanie podkatalog, na który wskazuje
dowiązanie.
.IP
Gdy działa opcja \fB\-L\fP, to wskazanie \fB\-type\fP zawsze będzie dopasowane w
odniesieniu do typu pliku, na który wskazuje dowiązanie, zamiast do samego
dowiązania (chyba, że jest ono zerwane). Akcje, które mogą spowodować
zrywanie dowiązań symbolicznych w trakcie działania \fBfind\fP (np. \fB\-delete\fP)
mogą spowodować dezorientujące zachowanie. Użycie \fB\-L\fP spowoduje, że
wskazanie \fB\-lname\fP i \fB\-ilname\fP zawsze zwróci fałsz.

.IP \fB\-H\fP
Nie podąża za dowiązaniami symbolicznymi, z wyjątkiem przetwarzania
argumentów wiersza polecenia. Gdy \fBfind\fP sprawdza lub wypisuje informacje o
plikach, powinny być one brane z właściwości samego dowiązania
symbolicznego. Jedynym wyjątkiem jest sytuacja, gdy plik podany w wierszu
polecenia jest dowiązaniem symbolicznym i może być ono rozwiązane. Wówczas
informacja jest brana z tego, na co wskazuje dowiązanie (tj. podąża się za
dowiązaniem). Informacja z samego dowiązania jest używana w razie, gdy plik,
na który wskazuje dowiązanie nie może być sprawdzony. Gdy działa \fB\-H\fP i
jedna ze ścieżek podanych w wierszu polecenia jest dowiązaniem symbolicznym
do katalogu, sprawdzana jest zawartość tego katalogu (zapobiegnie temu
skorzystanie z \fB\-maxdepth\ 0\fP).
.P
Jeśli podano więcej niż jedną z opcji \fB\-H\fP, \fB\-L\fP i \fB\-P\fP, każda przesłania
poprzednią \- liczy się ostatnia podana w wierszu polecenia, Ponieważ opcja
\fB\-P\fP jest domyślna, powinno się ją uznać za działającą, chyba że podano
\fB\-H\fP lub \fB\-L\fP.

GNU \fBfind\fP często sprawdza status plików podczas przetwarzania samego
wiersza polecenia, przed rozpoczęciem właściwego przeszukiwania. Opcje te
mogą również wpływać na sposób przetworzenia argumentów. Co więcej, istnieje
wiele testów, które porównują pliki z wiersza polecenia do aktualnie
rozważanego pliku. W każdym przypadku, plik podany w wierszu polecenia
będzie sprawdzony i niektóre z jego właściwości zostaną zachowane. Jeżeli
nazwany plik jest w rzeczywistości dowiązaniem symbolicznym, a działa opcja
\fB\-P\fP (lub nie podano \fB\-H\fP, ani \fB\-L\fP), to informacja użyta do porównania
zostanie wzięta z właściwości dowiązania symbolicznego. W przeciwnym razie,
właściwości będą wzięte z pliku, na który wskazuje dowiązanie. Jeżeli
\fBfind\fP nie może podążyć za dowiązaniem (np. ponieważ ma niewystarczające
uprawnienia lub dowiązanie wskazuje na nieistniejący plik) zostaną użyte
właściwości samego dowiązania.
.P
Gdy działa opcja \fB\-H\fP lub \fB\-L\fP, rozwiązywane są wszystkie dowiązania
symboliczne podane jako argument do opcji \fB\-newer\fP, a znaczniki czasowe
będą wzięte z pliku, na który wskazuje dowiązanie symboliczne. To samo
dotyczy opcji \fB\-newer\fP\fIXY\fP, \fB\-anewer\fP i \fB\-cnewer\fP.

Opcja \fB\-follow\fP ma podobne działanie do \fB\-L\fP, choć działa tylko w miejscu
pojawienia się (tj. jeśli \fB\-L\fP nie jest użyte, a skorzystano z \fB\-follow\fP,
to wszystkie dowiązania symboliczne pojawiające się w wierszu poleceń za
\fB\-follow\fP zostaną rozwiązane, lecz umieszczone wcześniej \- nie).

.IP "\-D debugopts"
Wyświetla informacje diagnostyczne \- może okazać się przydatna do
zdiagnozowania przypadków, gdy \fBfind\fP nie robi tego czego od niego
oczekujemy. Lista opcji debugowania powinna być oddzielona przecinkami. Nie
gwarantuje się kompatybilności opcji debugowania pomiędzy wydaniami
findutils. Pełną listę prawidłowych opcji debugowania wyświetli polecenie
\fBfind \-D\ help\fP. Są to między innymi:
.RS
.IP exec
Wyświetla informacje diagnostyczne związane z \-exec, \-execdir, \-ok i \-okdir.
.IP opt
Wyświetla informacje diagnostyczne związane z optymalizację drzewka wyrażeń;
patrz opcja \fB\-O\fP.
.IP rates
Wyświetla podsumowanie wskazujące częstość sukcesu lub porażki każdego
wskazania.
.IP search
Informuje o przechodzeniu przez drzewo katalogów.
.IP stat
Wyświetla komunikaty o plikach sprawdzanych przez wywołania systemowe
\fBstat\fP i \fBlstat\fP. Program \fBfind\fP stara się zminimalizować liczbę takich
wywołań.
.IP tree
Wyświetla drzewko wyrażeń w formie oryginalnej i zoptymalizowanej.
.IP all
Włącza wszystkie inne opcje debugowania (poza \fBhelp\fP).
.IP help
Objaśnia opcje debugowania.
.RE
.IP \fB\-O\fP\fIpoziom\fP
Włącza optymalizację zapytań. Program \fBfind\fP zmienia kolejność testów, aby
przyspieszyć wykonanie przy zachowaniu efektu końcowego; tj. nie zmienia się
wskazań z efektami ubocznymi w stosunku do każdego innego. Optymalizacje są
przeprowadzane zgodnie z poniższymi poziomami optymalizacji.
.RS
.IP 0
Odpowiednik poziomu optymalizacji 1.
.IP 1
Jest to domyślny poziom optymalizacji i odnosi się do tradycyjnego
zachowania. Kolejność wyrażeń jest zmieniana w ten sposób, że testy
działające tylko na nazwach plików (np. \fB\-name\fP lub \fB\-regex\fP) są
wykonywane jako pierwsze.
.IP 2
Testy \fB\-type\fP lub \fB\-xtype\fP są wykonywane po testach działających tylko na
nazwach plików, lecz przed testami wymagającymi informacji z i\-węzła. W
wielu współczesnych wersjach Uniksa, typy plików są zwracane przez
\fBreaddir()\fP, a więc są szybsze do sprawdzenia niż wskazówki, które wymagają
uprzedniego wykonania stat. Jeśli korzysta się z wskazań \fB\-fstype\ \fP\fIFOO\fP
i poda się typ systemu plików \fIFOO\fP, który nie jest znany (tj. nieobecny w
"/etc/mtab") w momencie uruchomienia \fBfind\fP, wskazanie to będzie równoważne
\fB\-false\fP.
.IP 3
Na tym poziomie optymalizacji, włączona jest pełna optymalizacja, działająca
w oparciu o koszt zapytań. Kolejność testów jest modyfikowana w taki sposób,
aby tanie (szybkie) testy były przeprowadzane wcześniej, a droższe \-
później, jeśli to konieczne. Wewnątrz każdej grupy kosztowej, wskazania są
przeprowadzane wcześniej lub później, zgodnie z prawdopodobieństwem ich
powodzenia. Przy \fB\-o\fP, wskazania o większym prawdopodobieństwie sukcesu są
przeprowadzane wcześniej, a przy \fB\-a\fP, wcześniej wykonywane są wskazania o
większym prawdopodobieństwie niepowodzenia.
.RE
.IP
Optymalizator działający w oparciu o koszty, ma z góry przyjęte założenie o
prawdopodobieństwie powodzenia danego testu. W niektórych przypadkach,
prawdopodobieństwo bierze pod uwagę naturę testu (np. \fB\-type\ f\fP powinien
kończyć się sukcesem częściej niż \fB\-type\ c\fP). Optymalizator jest jeszcze w
fazie kalkulacji. Jeśli nie poprawi to wydajności programu \fBfind\fP, zostanie
ponownie usunięty. Podobnie, optymalizacje, które udowodnią swą rzetelność,
spójność i efektywność, mogą w przyszłości zostać włączone na niższym
poziomie optymalizacyjnym. Jednak domyślne zachowanie (poziom optymalizacji
1) nie zmieni się w wydaniach 4.3.x. Zestaw testów findutils wykonuje
wszystkie testy \fBfind\fP na każdym poziomie optymalizacji, aby mieć pewność,
że wyniki pozostają te same.

Zmiana kolejności wykonywanych operacji dokonana przez optymalizator
kosztowy może spowodować odczuwalną dla użytkownika zmianę zachowania. Na
przykład wskazania \fB\-readable\fP i \fB\-empty\fP są wrażliwe na zmianę
kolejności. Jeśli zostaną uruchomione w kolejności \fB\-empty \-readable\fP, dla
nieodczytywalnych katalogów zostanie wypisany błąd. Z kolei w kolejności
\fB\-readable \-empty\fP taki błąd nie wystąpi. Jest to powód, dla którego tego
typu zmiana kolejności operacji nie jest dokonywana na domyślnym poziomie
optymalizacji.
.
.SH WYRAŻENIE
Część wiersza poleceń po liście punktów początkowych jest
\fIwyrażeniem\fP. Jest to rodzaj określenia zapytania, opisującego w jaki
sposób dopasowywać pliki i co z nimi zrobić po dopasowaniu. Wyrażenie składa
się z kilku rzeczy:

.IP Testy
Testy zwracają prawdę lub fałsz, zwykle na podstawie jakiejś własności
rozważanego pliku. Na przykład test \fB\-empty\fP jest prawdziwy tylko, gdy
bieżący plik jest pusty.

.IP Akcje
Akcje mają efekty poboczne (takie jak wypisywanie czegoś na standardowym
wyjściu) i zwracają prawdę lub fałsz, zwykle w zależności od tego, czy się
powiodą. Akcje \fB\-print\fP wypisuje na przykład nazwę bieżącego pliku na
standardowym wyjściu.

.IP "Opcje globalne"
Opcje globalne wpływają na działanie testów i akcji podanych w dowolnej
części wiersza poleceń. Opcje globalne zawsze zwracają prawdę. Na przykład
opcja \fB\-depth\fP powoduje, że \fBfind\fP przechodzi przez system plików,
zagłębiając się najpierw w katalogach.

.IP "Opcje pozycyjne"
Opcje pozycyjne wpływają tylko na testy lub akcje, które występują za
nimi. Opcja pozycyjne zawsze zwracają prawdę. Na przykład opcja
\fB\-regextype\fP jest pozycyjna, określa dialekt wyrażeń regularnych, dla
wyrażeń regularnych, które pojawią się dalej w wierszu polecenia.

.IP Operatory
Operatory łączą inne rzeczy w wyrażeniu. Obejmują na przykład \fB\-o\fP
(oznaczające logiczne LUB \[em] OR) oraz \fB\-a\fP (oznaczające logiczne ORAZ
\[em] AND). Tam, gdzie nie podano operatora, przyjmowane jest \fB\-a\fP.

.P
Akcja \fB\-print\fP jest wykonywana na wszystkich plikach, dla których prawdziwe
jest całe wyrażenie, chyba że zawiera ono akcję inną niż \fB\-prune\fP lub
\fB\-quit\fP. Akcjami wstrzymującymi domyślne \fB\-print\fP są: \fB\-delete\fP,
\fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP, \fB\-okdir\fP, \fB\-fls\fP, \fB\-fprint\fP, \fB\-fprintf\fP,
\fB\-ls\fP, \fB\-print\fP i \fB\-printf\fP.


Akcja \fB\-delete\fP działa również jak opcja (ponieważ wymusza \fB\-depth\fP).

.SS "OPCJE POZYCYJNE"
Opcje pozycyjne zawsze zwracają prawdę. Wpływają jedynie na testy, które
znajdują się za nimi w wierszu polecenia.

.IP \fB\-daystart\fP
Mierzy czasy (dla \fB\-amin\fP, \fB\-atime\fP, \fB\-cmin\fP, \fB\-ctime\fP, \fB\-mmin\fP i
\fB\-mtime\fP) od dziś, a nie od 24 godzin temu. Opcja ta wpływa jedynie na
testy, pojawiające się później w wierszu polecenia.

.IP \fB\-follow\fP
Przestarzałe, proszę zamiast tego użyć opcji \fB\-L\fP. Rozwiązuje dowiązania
symboliczne. Implikuje \fB\-noleaf\fP. Opcja \fB\-foolow\fP działa jedynie na testy
pojawiające się w wierszu polecenia za nią. O ile nie poda się opcji \fB\-H\fP
lub \fB\-L\fP, pozycja opcji \fB\-follow\fP zmienia zachowanie wskazania \fB\-newer\fP \-
pliki będące argumentami \fB\-newer\fP zostaną rozwiązane, jeśli są dowiązaniami
symbolicznymi. To samo dotyczy opcji \fB\-newer\fP\fIXY\fP, \fB\-anewer\fP and
\fB\-cnewer\fP. Podobnie, wskazanie \fB\-type\fP zostanie zawsze dopasowane do pliku
wskazanego przez dowiązanie symboliczne, zamiast do samego
dowiązania. Użycie \fB\-follow\fP powoduje, że wskazania \fB\-lname\fP i \fB\-ilname\fP
zawsze zwracają fałsz.

.IP "\fB\-regextype\fP \fItyp\fP"
Zmienia składnię wyrażeń regularnych rozumianych przez testy \fB\-regex\fP i
\fB\-iregex\fP podane później w wierszu poleceń. Znane typy wyrażeń regularnych
wypisze \fB\-regextype\ help\fP. Dokumentacja Texinfo (zob. \fBZOBACZ TAKŻE\fP)
wyjaśnia znaczenie i różnice między poszczególnymi typami wyrażeń
regularnych. Jeśli nie użyje się tej opcji, find zachowuje się tak, jakby
podano typ wyrażeń regularnych \fBemacs\fP.

.IP "\fB\-warn\fP, \fB\-nowarn\fP"
Odpowiednio: włącza lub wyłącza ostrzeżenia. Odnoszą się one wyłącznie do
użycia wiersza poleceń, a nie do warunków zastanych przez \fBfind\fP podczas
przeszukiwania katalogów. Domyślne zachowanie odpowiada \fB\-warn\fP gdy
standardowym wejściem jest tty i \fB\-nowarn\fP w przeciwnym wypadku. Jeśli
utworzone zostanie ostrzeżeń związane z użycie wiersza polecenia, nie ma to
wpływu na status zakończenia \fBfind\fP. Jeśli ustawiono zmienną środowiskową
\fBPOSIXLY_CORRECT\fP i podano również \fB\-warn\fP nie jest określone które, ani
czy w ogóle, ostrzeżenia będą aktywne.

.SS "OPCJE GLOBALNE"
Opcje globalne zawsze zwracają prawdę. Opcje globalne działają nawet wobec
testów, które występują wcześniej w wierszu polecenia. Aby uniknąć
zamieszania, opcje globalne należy podawać w wierszu polecenia po liście
punktów początkowych, a przed pierwszymi testami, opcjami pozycyjnymi lub
akcjami. Jeśli poda się opcję globalną w innym miejscu, \fBfind\fP wypisze
ostrzeżenie, wyjaśniające że może być to mylące.

Opcje globalne pojawiają się po liście punktów początkowych, zatem nie są
opcjami tego samego typu jak np. \fB\-L\fP.

.IP \fB\-d\fP
Synonim \fB\-depth\fP, ze względu na kompatybilność z FreeBSD, NetBSD, MacOS X i
OpenBSD.

.IP \fB\-depth\fP
Przetwarza zawartość każdego katalogu przed samym katalogiem jako
takim. Akcja \fB\-delete\fP implikuje także \fB\-depth\fP.

.IP "\-files0\-from \fIplik\fP"
Odczytuje punkty początkowe z \fIpliku\fP zamiast uzyskiwać je z wiersza
poleceń. W odróżnieniu od znanych ograniczeń związanych z przekazywaniem
punktów początkowych jako argumenty w wierszu poleceń, w szczególności
ograniczeń związanych z liczbą nazw plików, a także nieodłączną niepewnością
jeśli chodzi o różnicowanie nazw plików z nazwami opcji, użycie tej opcji
pozwala na bezpieczne przekazanie dowolnej liczby punktów początkowych
programowi \fBfind\fP.

Korzystanie z tej opcji oraz przekazanie punktów początkowych w wierszu
polecenia wyklucza się wzajemnie, zatem nie można tego zrobić w tym samym
czasie.

Argument \fIplik\fP jest obowiązkowy. Można użyć postaci \fB\-files0\-from\ \-\fP,
aby odczytać listę punktów początkowych ze strumienia \fIstandardowego wejścia\fP i np. z potoku. W takim przypadku nie są dozwolone akcje \fB\-ok\fP i
\fB\-okdir\fP, ponieważ oczywiście kolidowałyby z odczytywaniem ze
\fIstandardowego wejścia\fP w celu uzyskania potwierdzeń od użytkownika.

Punkty początkowe w \fIpliku\fP należy rozdzielać znakami NUL ASCII. Dwa znaki
NUL następujące po sobie tj. punkt początkowy z nazwą pliku o zerowej
długości nie są dopuszczalne i spowodują wypisanie błędu wraz z późniejszym
niezerowym statusem zakończenia.

Jeśli podany \fIplik\fP będzie pusty, \fBfind\fP nie przetworzy punktu
początkowego, zatem wyjdzie bezpośrednio po przetworzeniu argumentów
programu. Różni się to od standardowego wywołania \fBfind\fP gdy, jeśli nie
poda się argumentu ścieżki, program przyjmuje katalog bieżący jako punkt
początkowy.

Poza tym, przetwarzanie punktów początkowych następuje wedle zwykłych reguł
np. \fBfind\fP przejdzie rekurencyjnie do podkatalogów, o ile nie wskazano
inaczej. Aby przetworzyć tylko punktu początkowe, można podać dodatkowo
\fB\-maxdepth\ 0\fP.

Dalsze uwagi: jeśli poda się ten sam plik kilkakrotnie w pliku wejściowym,
jest nieokreślone, czy zostanie odwiedzony więcej niż raz. Jeśli plik
zostanie zmieniony podczas działania \fBfind\fP, wynik jest również
nieokreślony. Dodatkowo, pozycja przeszukania w nazwanym \fIpliku\fP, w
momencie gdy \fBfind\fP wyjdzie, ze względu na \fB\-quit\fP lub z innej przyczyny,
także jest nieokreślona. Przez "nieokreślone" rozumiemy tu fakt, że może to
zadziałać lub nie albo dokonać jakiejś rzeczy, a zachowanie to może różnić
się między platformami oraz między wydaniami \fBfindutils\fP.

.IP "\fB\-help\fP, \fB\-\-help\fP"
Wypisuje sposób użycia \fBfind\fP z wiersza poleceń i kończy pracę programu.

.IP \fB\-ignore_readdir_race\fP
Zwykle \fBfind\fP wyświetla błąd, gdy nie uda mu się pobrać statusu pliku. Po
podaniu tej opcji i usunięciu pliku pomiędzy odczytem przez \fBfind\fP nazwy
pliku z katalogu i momentem próby pobrania statusu, błąd nie zostanie
wyświetlony. Dotyczy to również plików i katalogów podanych w wierszu
polecenia. Opcja ta zaczyna działać już przy odczycie wiersza polecenia, co
oznacza, że nie da się przeszukiwać systemu plików częściowo z opcją
włączoną i częściowo z wyłączoną (aby to zrobić, konieczne jest dwukrotne
uruchomienie polecenia \fBfind\fP, jeden raz z opcją włączoną, a drugi \- z
wyłączoną).

Co więcej, \fBfind\fP z opcją \fB\-ignore_readdir_race\fP zignoruje błędy akcji
\fB\-delete\fP w przypadku, gdy plik zniknie od momentu odczytania katalogu
macierzystego: program nie wypisze żadnego błędu, a zwracanym kodem akcji
\fB\-delete\fP będzie prawda.

.IP "\fB\-maxdepth\fP \fIgłębokość\fP"
Schodzi maksymalnie o \fIgłębokość\fP (nieujemna liczba całkowita) poziomów
katalogów od punktów początkowych. Podanie \fB\-maxdepth\ 0\fP oznacza, że testy
i akcje stosują się tylko do samych punktów początkowych.

.IP "\fB\-mindepth\fP \fIgłębokość\fP"
Nie stosuje testów lub akcji w poziomach niższych niż \fIgłębokość\fP
(nieujemna liczba całkowita). Użycie \fBmindepth\ 1\fP oznacza przetwarzanie
wszystkich plików poza punktami początkowymi.

.IP \fB\-mount\fP
Nie zagłębia się w katalogi na innych systemach plików. Jest to alternatywna
nazwa dla \fB\-xdev\fP, stworzona dla zgodności z innymi wersjami \fBfind\fP.

.IP \fB\-noignore_readdir_race\fP
Wyłącza efekt opcji \fB\-ignore_readdir_race\fP.

.IP \fB\-noleaf\fP
Zakazuje optymalizacji wykonywanej przez zakładanie, że katalogi zawierają o
dwa podkatalogi mniej niż ich licznik dowiązań zwykłych (twardych). Opcja ta
jest wymagana podczas przeszukiwania systemów plików, które nie używają
uniksowej konwencji wiązania katalogów, takich jak systemy plików CD\-ROM,
MS\-DOS czy wolumeny AFS. Każdy katalog w normalnym systemie uniksowym
zawiera przynajmniej dwa twarde dowiązania: jego nazwę i ".". Dodatkowo,
jego podkatalogi będą do niego dowiązane za pomocą ".." każdy.  Gdy \fBfind\fP
testuje katalog po zbadaniu funkcją stat o 2 mniej podkatalogów niż licznik
dowiązań, wie, że reszta wpisów jest niekatalogowa (są to "liście" \- "leaf"
w drzewie katalogów). Jeśli testowane mają być tylko nazwy plików, to nie ma
potrzeby ich sprawdzać; daje to znaczące przyspieszenie.

.IP "\fB\-version\fP, \fB\-\-version\fP"
Wypisuje wersję i kończy pracę.

.IP \fB\-xdev\fP
Nie zagłębia się w katalogi na innych systemach plików.

.SS TESTY
Niektóre testy np. \fB\-newer\fP\fIXY\fP i \fB\-samefile\fP pozwalają na porównanie
pomiędzy aktualnie sprawdzanym plikiem i plikiem odniesienia podanym w
wierszu polecenia. Gdy te testy są używane, interpretacja pliku odniesienia
zależy od opcji \fB\-H\fP, \fB\-L\fP i \fB\-P\fP i podanej wcześniej \fB\-follow\fP, lecz
plik odniesienia jest sprawdzany tylko raz, przy przetwarzaniu wiersza
polecenia. Jeśli plik odniesienia nie może zostać sprawdzony (np. wywołanie
systemowe \fBstat\fP(2) nie powiedzie się na nim), wyświetlany jest błąd, a
\fBfind\fP wychodzi z niezerowym kodem zakończenia.
.P
Do testów (takich jak \fB\-amin\fP, \fB\-mtime\fP, \fB\-gid\fP, \fB\-inum\fP, \fB\-links\fP,
\fB\-size\fP, \fB\-uid\fP i \fB\-used\fP) można podać argument numeryczny \fIn\fP jako
.IP \fI+n\fP
dla większych niż \fIn\fP,
.IP \fI\-n\fP
dla mniejszych niż \fIn\fP,
.IP \fIn\fP
dla równych \fIn\fP.
.
.P
Obsługiwane testy:

.IP "\fB\-amin\fP \fIn\fP"
Dostęp do pliku nastąpił ostatnio wcześniej niż, dawniej niż lub dokładnie
\fIn\fP minut temu.

.IP "\-anewer \fIodniesienie\fP"
Czas ostatniego dostępu do bieżącego pliku jest późniejszy (nowszy) niż data
ostatniej modyfikacji pliku \fIodniesienia\fP. Jeśli \fIodniesienie\fP jest
dowiązaniem i działa jedna z opcji \fB\-H\fP lub \fB\-L\fP, to używany jest zawsze
czas ostatniej modyfikacji pliku, na który wskazuje dowiązanie.

.IP "\fB\-atime\fP \fIn\fP"
Dostęp do pliku miał miejsce wcześniej niż, później niż lub dokładnie
\fIn\fP*24 godzin temu. Gdy \fBfind\fP dowie się jak wiele okresów 24\-godzinnych
temu dostano się do pliku, ignorowana jest część ułamkowa; tak więc aby
dopasować \fB\-atime\ +1\fP, dostęp do pliku musiał być co najwyżej \fIdwa\fP dni
temu.

.IP "\fB\-cmin\fP \fIn\fP"
Status pliku został zmieniony wcześniej niż, później niż lub dokładnie \fIn\fP
minut temu.

.IP "\-cnewer \fIodniesienie\fP"
Czas ostatniej zmiany statusu do bieżącego pliku jest późniejszy (nowszy)
niż data ostatniej modyfikacji pliku \fIodniesienia\fP. Jeśli \fIodniesienie\fP
jest dowiązaniem i działa jedna z opcji \fB\-H\fP lub \fB\-L\fP, to używany jest
zawsze czas ostatniej modyfikacji pliku, na który wskazuje dowiązanie.

.IP "\fB\-ctime\fP \fIn\fP"
Status pliku został zmieniony wcześniej niż, dawniej niż lub dokładnie
\fIn\fP*24 godzin temu. Proszę zapoznać się z komentarzami do \fB\-atime\fP, aby
zrozumieć wpływ zaokrąglenia na interpretację czasu modyfikacji pliku.

.IP \fB\-empty\fP
Plik jest pusty i jest albo zwykłym plikiem, albo katalogiem.

.IP \fB\-executable\fP
Dopasowuje pliki, które są wykonywalne i katalogi, które są przeszukiwalne
(w sensie tłumaczenia nazw pliku) dla bieżącego użytkownika. Bierze pod
uwagę listy kontroli dostępu (ACL) i inne zasady praw dostępu, które są
ignorowane przez test \fB\-perm\fP.  Ten test używa wywołania systemowego
\fBaccess\fP(2) i może być zmylony przez serwery NFS używające mapowania UID
(lub root\-squashing), gdyż wiele systemów implementuje \fBaccess\fP(2) w jądrze
klienta i nie może użyć informacji mapowania UID po stronie
serwera. Ponieważ test ten działa tylko w oparciu o wywołanie systemowe
\fBaccess\fP(2), nie ma gwarancji, że plik dla którego test się powiódł, może
być w rzeczywistości wykonany.

.IP \fB\-false\fP
Zawsze fałszywe.

.IP "\fB\-fstype\fP \fItyp\fP"
Plik jest na systemie plików o typie \fItyp\fP. Prawidłowe typy systemów plików
różnią się na różnych wersjach Uniksa; ich niekompletna lista, która jest
przyjmowana w części systemów to: \fBufs\fP, \fB4.2\fP, \fB4.3\fP, \fBnfs\fP, \fBtmp\fP,
\fBmfs\fP, \fBS51K\fP, \fBS52K\fP.  Aby zobaczyć typy swoich systemów plików, należy
użyć \-printf z dyrektywą %F.

.IP "\fB\-gid\fP \fIn\fP"
Numeryczny GID pliku, który wynosi mniej niż, więcej niż lub dokładnie \fIn\fP.

.IP "\fB\-group\fP \fInazwag\fP"
Plik należy do grupy \fInazwag\fP (numeryczny GID jest dopuszczalny).

.IP "\fB\-ilname\fP \fIwzorzec\fP"
Podobnie jak \fB\-lname\fP, lecz dopasowanie jest niezależne od wielkości
znaków. Jeśli działa opcja \fB\-L\fP lub \fB\-follow\fP, test zwraca fałsz, chyba że
dowiązanie symboliczne jest zerwane.


.IP "\fB\-iname\fP \fIpattern\fP"
Podobnie jak \fB\-name\fP, lecz dopasowanie jest niezależne od wielkości
znaków. Na przykład wzorce "fo*" i "F??" dopasują nazwy plików "Foo", "FOO",
"foo", "fOo", itp. Wzorzec "*foo*" dopasuje również plik '.foobar'.

.IP "\fB\-inum\fP \fIn\fP"
Plik ma numer i\-węzła mniejszy niż, większy niż lub dokładnie równy
\fIn\fP. Zwykle łatwiej jest użyć testu \fB\-samefile\fP.

.IP "\fB\-ipath\fP \fIwzorzec\fP"
Podobne do \fB\-path\fP, lecz dopasowanie jest niewrażliwe na rozmiar liter.

.IP "\fB\-iregex\fP \fIwzorzec\fP"
Podobne do \fB\-regex\fP, lecz dopasowanie jest niewrażliwe na rozmiar liter.

.IP "\fB\-ilname\fP \fIpattern\fP"
Patrz \fB\-ipath\fP. Ta alternatywa jest mniej przenośna niż wspomniana opcja.

.IP "\fB\-links\fP \fIn\fP"
Plik ma mniej niż, więcej niż lub dokładnie \fIn\fP dowiązań zwykłych
(twardych).

.IP "\fB\-lname\fP \fIwzorzec\fP"
Plik jest dowiązaniem symbolicznym, którego zawartość odpowiada wzorcowi
powłoki \fIwzorzec\fP. Metaznaki nie traktują specjalnie "/" i ".". Jeśli
działa opcja \fB\-L\fP lub \fB\-follow\fP, to test zwraca fałsz, chyba że dowiązanie
symboliczne jest zerwane.

.IP "\fB\-mmin\fP \fIn\fP"
Dane pliku były ostatnio modyfikowane wcześniej niż, później niż lub
dokładnie \fIn\fP minut temu.

.IP "\fB\-mtime\fP \fIn\fP"
Dane pliku zostały ostatnio zmodyfikowane wcześniej niż, później niż lub
dokładnie \fIn\fP*24 godziny temu. Proszę zapoznać się komentarzami do opcji
\fB\-atime\fP, aby zrozumieć, w jaki sposób zaokrąglanie wpływa na interpretację
czasów modyfikacji pliku.

.IP "\fB\-name\fP \fIwzorzec\fP"
Bazowa nazwa pliku ("basename", ścieżka z usuniętymi poprzedzającymi
katalogami) pasuje do wzorca powłoki \fIwzorzec\fP. Z powodu usunięcia
początkowych katalogów, \fIwzorzec\fP nie powinien zawierać ukośnika, ponieważ
"\-name a/b" nigdy niczego nie dopasuje (i raczej powinno się wtedy użyć
\fB\-path\fP). Wyjątkiem jest użycie jako \fIwzorca\fP samego ukośnika ("\-name /"),
ponieważ jest to prawidłowy łańcuch dopasowujący katalog główny "/"
(ponieważ nazwą bazową "/" jest "/"). Jeśli spróbuje się podać wzorzec
zawierający \- ale nieskładający się wyłącznie z \- ukośnika, wypisane
zostanie ostrzeżenie, chyba że ustawiono zmienną środowiskową
\fBPOSIXLY_CORRECT\fP, albo użyto opcji \fB\-nowarn\fP.

Do zignorowania katalogu i podrzędnych mu plików, zamiast sprawdzania
każdego pliku w drzewie należy użyć \fB\-prune\fP, zob. przykład w opisie tej
akcji. Nawiasy klamrowe nie są rozpoznawane jako specjalne, niezależnie od
faktu, że niektóre powłoki, w tym Bash, nadają mu specjalne znaczenie we
wzorcach powłoki. Dopasowanie nazwy pliku jest przeprowadzane za pomocą
funkcji bibliotecznej \fBfnmatch\fP(3). Proszę nie zapomnieć ująć wzorca w
cudzysłowy, aby zapobiec interpretacji go przez powłokę.

.IP "\-newer \fIodniesienie\fP"
Czas ostatniej modyfikacji bieżącego pliku jest późniejszy (nowszy) niż data
ostatniej modyfikacji pliku \fIodniesienia\fP. Jeśli \fIodniesienie\fP jest
dowiązaniem i działa jedna z opcji \fB\-H\fP lub \fB\-L\fP, to używany jest zawsze
czas ostatniej modyfikacji pliku, na który wskazuje dowiązanie.

.IP "\fB\-newer\fP\fIXY odniesienie\fP"
Powodzi się, jeśli znacznik czasu \fIX\fP rozważanego pliku jest nowszy niż
znacznik czasu \fIY\fP pliku \fIodniesienia\fP. Litery \fIX\fP i \fIY\fP mogą być
dowolnymi z poniższych:

.TS
ll
ll
ll
ll
llw(2i).
a	Czas dostępu (ang. access) pliku \fIodniesienie\fP
B	Czas powstania (ang. birth) pliku \fIodniesienie\fP
c	Czas zmiany (ang. change) statusu i\-węzła \fIodniesienia\fP
m	Czas modyfikacji pliku \fIodniesienie\fP
t	\fIodniesienie\fP jest interpr. bezpośrednio jako czas (ang. time)
.TE

Niektóre kombinacje są nieprawidłowe, np. \fIX\fP nie może być \fBt\fP. Część
kombinacji nie jest zaimplementowanych we wszystkich systemach, do takich
należy np. \fBB\fP. Jeśli poda się nieprawidłową lub nieobsługiwaną kombinację
\fIXY\fP, otrzymuje się błąd krytyczny. Określenia czasowe są interpretowane
jak argument do opcji \fB\-d\fP GNU \fBdate\fP. Jeżeli czas powstania pliku
odniesienia nie może być ustalony, to przy próbie użycia go wynikiem jest
komunikat o błędzie krytycznym. Jeśli poda się test, odnoszący się do czasu
powstania sprawdzanych plików, to test ten nie powiedzie się dla wszystkich
plików, których czas ten jest nieznany.

.IP \fB\-nogroup\fP
Do numerycznego GID pliku nie pasuje żadna grupa.

.IP \fB\-nouser\fP
Do numerycznego UID pliku nie pasuje żaden użytkownik.

.IP "\fB\-path\fP \fIwzorzec\fP"
Nazwa pliku odpowiada wzorcowi powłoki \fIwzorzec\fP. Metaznaki nie traktują
specjalnie "/" lub "."; tak więc na przykład,
.in +4m
.nf
find . \-path "./sr*sc"
.fi
.in
Wypisze wpis dla katalogu o nazwie \fI./src/misc\fP (jeśli taki istnieje). Aby
zignorować całe drzewo katalogu, zamiast sprawdzać każdy plik w drzewie,
należy użyć \fB\-prune\fP. Proszę zauważyć, że test dopasowuje wzorzec do całej
nazwy pliku, poczynając od punktu początkowego, podanego w wierszu
polecenie. Jeśli punkt startowy jest ścieżką absolutną, sens ma zastosowanie
również wyłącznie ścieżki absolutnej. Oznacza to, że poniższe polecenie
nigdy niczego nie dopasuje.
.br
.in +4m
.nf
find bar \-path /foo/bar/myfile \-print
.fi
.in
Find porównuje argument \fB\-path\fP z przyciętą nazwą katalogu oraz nazwą
bazową pliku, który jest sprawdzany. Jako że przycięta nazwa katalogu nigdy
nie będzie kończyła się ukośnikiem, argumenty \fB\-path\fP kończące się
ukośnikiem niczego nie dopasują (może za wyjątkiem punktu początkowego
podanego w wierszu polecenia). Wskazanie \fB\-path\fP jest również obsługiwane
\fBfind\fP HP\-UX i jest częścią standardu POSIX 2008.

.IP "\fB\-perm\fP \fIprawa\fP"
Bity praw pliku są dokładnie takie, jak \fIprawa\fP (w formie ósemkowej lub
symbolicznej). Ponieważ wymagane jest dokładne dopasowanie, stosowanie tej
formuły w postaci symbolicznej wymaga podania dość skomplikowanego łańcucha
praw. Na przykład "\-perm g=w" dopasuje jedynie pliki o trybie 0020 (tj. te,
których prawo zapisu dla grupy jest jedynym ustawionych
uprawnieniem). Prawdopodobnie w takim przypadku lepsze jest użycie form "/"
lub "\-", np. "\-perm \-g=w", które dopasowuje każdy plik z prawem zapisu dla
grupy. Lepsze przykłady podano w rozdziale \fBPRZYKŁADY\fP.

.IP "\fB\-perm \-\fP\fIprawa\fP"
Wszystkie bity \fIpraw\fP pliku są ustawione dla pliku. Akceptowane są tryby w
postaci symbolicznej i jest to zwykle wygodniejsza forma do użycia. W
przypadku korzystania z postaci symbolicznej trzeba podać "u", "g" lub
"o". Lepsze przykłady podano w rozdziale \fBPRZYKŁADY\fP.

.IP "\fB\-perm /\fP\fIprawa\fP"
Ustawiony jest dowolny z bitów \fIpraw\fP pliku. Akceptowane są tryby w postaci
symbolicznej. W przypadku korzystania z postaci symbolicznej trzeba podać
"u", "g" lub "o". Lepsze przykłady podano w rozdziale \fBPRZYKŁADY\fP. Jeśli
nie ustawiono bitów praw w \fItrybie\fP, to test dopasuje każdy plik (zgodnie z
zamysłem, aby pozostać w zgodzie z zachowaniem \fB\-perm\ \-000\fP).

.IP "\fB\-perm +\fP\fIprawa\fP"
Nie jest już obsługiwane (a było przestarzałe od 2005 roku). Proszę użyć w
zamian \fB\-perm /\fP\fItryb\fP.

.IP \fB\-readable\fP
Dopasowuje pliki odczytywalne przez bieżącego użytkownika. Bierze się tu pod
uwagę listy kontroli dostępu (ACL) i inne sprawy związane z uprawnieniami,
które \fB\-perm\fP ignoruje. Ten test używa wywołania systemowego \fBaccess\fP(2) i
może być zmylony przez serwery NFS używające mapowania UID (lub
root\-squashing), gdyż wiele systemów implementuje \fBaccess\fP(2) w jądrze
klienta i nie może użyć informacji mapowania UID po stronie serwera.

.IP "\fB\-regex\fP \fIwzorzec\fP"
Nazwa pliku odpowiada wyrażeniu regularnemu \fIwzorzec\fP. Dopasowanie stosuje
się do całej ścieżki, nie dla przeszukiwanej. Na przykład, aby dopasować
plik o nazwie \fI./fubar3\fP, można użyć wyrażenia regularnego ".*bar" lub
".*b.*3", lecz nie "f.*r3". Wyrażenia regularne rozumiane przez \fBfind\fP są
domyślnie wyrażeniami regularnymi Emacsa, lecz można to zmienić opcją
\fB\-regextype\fP.

.IP "\fB\-samefile\fP \fInazwa\fP"
Plik odnosi się do tego samego i\-węzła co \fInazwa\fP. Gdy działa opcja \fB\-L\fP,
obejmuje to dowiązania symboliczne.

.IP "\fB\-size\fP \fIn\fP[\fBc\fP|\fBw\fP|\fBb\fP|\fBk\fP|\fBM\fP|\fBG\fP]"
Plik używa mniej niż, więcej niż lub dokładnie \fIn\fP jednostek miejsca,
zaokrąglając w górę. Można dodać następujące przyrostki:
.RS
.IP b
bloki 512\-bajtowe (wartość domyślna, gdy nie użyto przyrostka)
.IP c
bajty
.IP w
słowa dwubajtowe
.IP k
kibibajty (KiB, jednostka 1024 bajtów)
.IP M
mebibajty (MiB, jednostka 1024 * 1024 = 1\|048\|576 bajtów)
.IP G
gibibajty (GiB, jednostka 1024 * 1024 * 1024 = 1\|073\|741\|824 bajtów)
.RE
.IP
Rozmiar jest członem st_size struktury stat wypełnionym przez wywołanie
systemowe lstat (lub stat), zaokrąglonym jak pokazano wyżej. Innymi słowy,
jest on zgodny z wartościami podawanymi przez \fBls\ \-l\fP. Proszę pamiętać, że
określenia formatu "%k" i "%b" akcji \fB\-printf\fP obsługują pliki rzadkie w
inny sposób. Przyrostek "b" oznacza zawsze bloki 512\-bajtowe, a nigdy nie
1024\-bajtowe, co różni się od zachowania \fB\-ls\fP.
.IP
Przedrostki + i \- oznaczają odpowiednio, większy i mniejszy, wedle zwykłych
reguł tj. gdy dokładny rozmiar \fIn\fP jednostek nie jest sobie równy. Proszę
pamiętać, że rozmiar jest zaokrąglany w górę do następnej jednostki. Z tego
względu \fB\-size\ \-1M\fP nie jest równoważne \fB\-size\ \-1\|048\|576c\fP. Pierwszy
dopasuje tylko puste pliki, a drugi dopasuje pliki od 0 do 1\ 048\ 575
bajtów.
.IP \fB\-true\fP
Zawsze prawda.

.IP "\fB\-type\fP \fIc\fP"
Plik jest typu \fIc\fP:
.RS
.IP b
blokowy (buforowany) plik specjalny
.IP c
znakowy (niebuforowany) plik specjalny (ang. character)
.IP d
katalog (ang. directory)
.IP p
potok nazwany (FIFO)
.IP f
zwykły plik
.IP l
dowiązanie symboliczne (link); nigdy nie jest to prawda, gdy działa opcja
\fB\-L\fP lub \fB\-foolow\fP, chyba że dowiązanie jest zerwane. Aby wyszukiwać
dowiązania symboliczne przy korzystaniu z opcji \fB\-L\fP, należy użyć
\fB\-xtype\fP.
.IP s
gniazdo
.IP D
door (Solaris)
.RE
.IP
Aby odszukać jednocześnie więcej niż jeden typ, można podać listę liter
rozdzielonych przecinkiem "," (rozszerzenie GNU).
.IP "\fB\-uid\fP \fIn\fP"
Numeryczny UID pliku wynosi mniej niż, więcej niż lub dokładnie \fIn\fP.

.IP "\fB\-used\fP \fIn\fP"
Do pliku ostatnio dostano się wcześniej niż, dawniej niż lub dokładnie \fIn\fP
dni po zmianie jego statusu.

.IP "\fB\-user\fP \fIunazwa\fP"
Właścicielem pliku jest użytkownik \fIunazwa\fP (numeryczny UID jest tu
dozwolony).

.IP "\fB\-wholename\fP \fIwzorzec\fP"
Patrz \fB\-path\fP. Ta alternatywa jest mniej przenośna niż wspomniana opcja.

.IP \fB\-writable\fP
Dopasowuje pliki zapisywalne dla bieżącego użytkownika. Bierze pod uwagę
listy kontroli dostępu (ACL) i inne zasady praw dostępu, które są ignorowane
przez test \fB\-perm\fP.  Ten test używa wywołania systemowego \fBaccess\fP(2) i
może być zmylony przez serwery NFS używające mapowania UID (lub
root\-squashing), gdyż wiele systemów implementuje \fBaccess\fP(2) w jądrze
klienta i nie może użyć informacji mapowania UID po stronie serwera.

.IP "\fB\-xtype\fP \fIc\fP"
Jest to to samo co \fB\-type\fP, chyba że plik jest dowiązaniem
symbolicznym. Dla dowiązań symbolicznych: jeśli podano \fB\-H\fP lub \fB\-P\fP, jest
prawdziwe gdy plik jest dowiązaniem do pliku typu \fIc\fP; jeśli podano \fB\-L\fP,
jest prawdziwe, jeśli \fIc\fP to "l". Innymi słowy, dla dowiązań symbolicznych
\fB\-xtype\fP sprawdza typ pliku, którego nie sprawdza \fB\-type\fP. Jeśli
dowiązanie symboliczne jest zerwane (ponieważ rzecz, na którą wskazuje, nie
istnieje albo dowiązanie wskazuje samo na siebie), to \fB\-xtype\fP zachowuje
się tak samo jak \fB\-type\fP.
.IP "\-context \fIwzorzec\fP"
(tylko SELinux) Kontekst bezpieczeństwa pliku dopasowanego przez \fIwzorzec\fP
typu glob.

.SS AKCJE
.IP \fB\-delete\fP
Usuwa pliki lub katalogi; prawdziwe gdy usunięcie powiedzie się. Jeśli nie,
to wypisywany jest błąd, a kod zakończenia \fBfind\fP będzie niezerowy (gdy
program ostatecznie się zakończy).

\fBOstrzeżenie\fP: Proszę nie zapominać, że \fBfind\fP analizuje wiersz polecenia
jako wyrażenie, zatem umieszczenie \fB\-delete\fP jako pierwszego będzie
znaczyło, że \fBfind\fP spróbuje usunąć wszystko poniżej podanych punktów
początkowych.

Skorzystanie z akcji \fB\-delete\fP w wierszu polecenia automatycznie włącza
opcję \fB\-depth\fP. Jako że \fB\-depth\fP z kolei powoduje, że \fB\-prune\fP jest
nieskuteczne, akcji \fB\-delete\fP nie da się w praktyce połączyć z \fB\-prune\fP.

Często użytkownik może chcieć przetestować wiersz polecenia \fBfind\fP za
pomocą akcji \fB\-print\fP, przed dodaniem \fB\-delete\fP do faktycznego przebiegu
kasowania. Aby uniknąć zaskakujących wyników, zwykle należy pamiętać, aby
podać \fB\-depth\fP w tych wcześniejszych przebiegach testowych.

Usunięcie katalogu przez akcję \fB\-delete\fP nie powiedzie się, chyba że będzie
on pusty.

Razem z opcją \fB\-ignore_readdir_race\fP \fBfind\fP zignoruje błędy akcji
\fB\-delete\fP w przypadku, gdy plik zniknie od momentu odczytania katalogu
macierzystego: program nie wypisze żadnego błędu, nie zmieni kodu
zakończenia na niezerowy, a zwracanym kodem akcji \fB\-delete\fP będzie prawda.


.IP "\fB\-exec\fP \fIpolecenie\fP \fB;\fP"
Wykonuje \fIpolecenie\fP; prawdziwe jeśli zwrócony został status 0. Wszelkie
następne argumenty \fBfind\fP są brane za argumenty polecenia, aż nie zostanie
napotkany argument, składający się z ";". Łańcuch "{}' jest podmieniany na
obecnie przetwarzaną nazwę pliku, wszędzie, gdzie wystąpi ona w wierszu
polecenia, nie tylko w argumentach, gdzie jest ona sama, jak w niektórych
wersjach \fBfind\fP.  Obydwie te konstrukcje być może będą wymagały zacytowania
(znakiem "\e") aby uchronić je przed rozwinięciem przez powłokę. Więcej
informacji na temat użycia opcji \fB\-exec\fP, zawiera rozdział
\fBPRZYKŁADY\fP. Polecenie jest wykonywane w katalogu startowym. W związku z
akcją \fB\-exec\fP występują pewne nieuniknione zagrożenia związane z
bezpieczeństwem, należy zamiast niej używać \fB\-execdir\fP.

.IP "\fB\-exec\fP \fIpolecenie\fP \fB{} +\fP"
Ten wariant akcji \fB\-exec\fP, wykonuje podane polecenie na wybranych plikach,
lecz wiersz polecenia jest budowany przez dodawanie każdej wybranej nazwy
pliku na końcu \- całkowita liczba wywołań polecenia będzie znacznie
mniejsza, niż liczba dopasowanych plików. Wiersz polecenia jest budowany w
ten sam sposób, w jaki \fBxargs\fP buduje swój. W poleceniu dozwolone jest
wystąpienie jedynie jednych nawiasów "{}" i musi ono wystąpić na końcu,
zaraz przed "+"; trzeba je też poprzedzić znakiem "\e" lub zacytować, aby
ochronić przed interpretacją przez powłokę. Polecenie jest wykonywane w
katalogu początkowym. Jeśli którekolwiek z wywołań w postaci "+" zwróci
niezerową wartość jako status zakończenia, \fBfind\fP zwróci niezerowy status
zakończenia. Jeśli \fBfind\fP napotka na błąd, może on czasem spowodować
natychmiastowe wyjście, zatem niektóre oczekujące polecenia mogą się wcale
nie uruchomić. Z tego powodu \fB\-exec\ \fP\fImoje\-polecenie\fP\fB\ ...\ {}\ +\ \-quit\fP może nie spowodować faktycznego wykonania \fImojego\-polecenia\fP. Ten
wariant \fB\-exec\fP zawsze zwraca prawdę.

.IP "\fB\-execdir\fP \fIpolecenie\fP \fB;\fP"
.IP "\fB\-execdir\fP \fIpolecenie\fP \fB{} +\fP"
Podobnie jak \fB\-exec\fP, lecz podane polecenie jest uruchamiane z podkatalogu
zawierającego dopasowany plik, który nie jest zwykle tożsamy z katalogiem, w
którym uruchomiono \fBfind\fP. Podobnie jak przy \-exec, trzeba zacytować {},
jeśli find jest wywoływany z powłoki. Jest to o wiele bezpieczniejsza metoda
wywoływania poleceń, ponieważ zapobiega wyścigowi przy rozwiązywaniu ścieżek
do dopasowanych plików. Podobnie jak przy akcji \fB\-exec\fP, postać z "+"
\fB\-execdir\fP zbuduje wiersz poleceń aby przetworzyć więcej niż jeden
dopasowany plik, lecz każde dane wywołanie \fIpolecenia\fP wypisze jedynie
pliki, które istnieją w tym samym podkatalogu. Przy używaniu tej opcji,
trzeba się upewnić, że zmienna środowiskowa \fB$PATH\fP nie odnosi się do "." \-
w takim wypadku atakujący mógłby uruchomić dowolne polecenie, przez
pozostawienie pliku o odpowiedniej nazwie w katalogu, w którym zostanie
uruchomione \fB\-execdir\fP. To samo tyczy się wpisów w \fB$PATH\fP, które są puste
lub nie są bezwzględną nazwą katalogu. Jeśli którekolwiek z wywołań w
postaci "+" zwróci niezerową wartość jako status zakończenia, \fBfind\fP zwróci
niezerowy status zakończenia. Jeśli \fBfind\fP napotka na błąd, może on czasem
spowodować natychmiastowe wyjście, zatem niektóre oczekujące polecenia mogą
się wcale nie uruchomić. Wynik akcji zależy od tego, czy użyto wariantu \fB+\fP
czy \fB;\fP, bowiem \fB\-execdir\ \fP\fIpolecenie\fP\fB\ {}\ +\fP zawsze zwróci prawdę,
natomiast \fB\-execdir\ \fP\fIpolecenie\fP\fB\ {}\ ;\fP zwróci prawdę tylko, jeśli
\fIpolecenie\fP zwróci 0.


.IP "\fB\-fls\fP \fIplik\fP"
Prawda; podobne do \fB\-ls\fP, lecz zapisuje do \fIpliku\fP jak \fB\-fprint\fP. Plik
wyjściowy jest tworzony zawsze, nawet jeśli wskazanie nigdy nie pasuje. W
rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje nt. obsługi
nietypowych nazw plików.

.IP "\fB\-fprint\fP \fIplik\fP"
Prawdziwe; wypisuje pełną nazwę pliku do \fIpliku\fP. Jeśli \fIplik\fP nie
istnieje w czasie działania \fBfind\fP, zostanie utworzony; jeśli istnieje,
zostanie obcięty. Nazwy plików \fI/dev/stdout\fP i \fI/dev/stderr\fP są traktowane
osobno; odnoszą się one odpowiednio do standardowego wyjścia i standardowego
wyjścia błędów. Plik wyjściowy jest tworzony zawsze, nawet jeśli wskazanie
nigdy nie pasuje. W rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się
informacje nt. obsługi nietypowych nazw plików.

.IP "\fB\-fprint0\fP \fIplik\fP"
Prawda; podobne do \fB\-print0\fP, lecz zapisuje do \fIpliku\fP jak
\fB\-fprint\fP. Plik wyjściowy jest tworzony zawsze, nawet jeśli wskazanie nigdy
nie pasuje. W rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje
nt. obsługi nietypowych nazw plików.

.IP "\fB\-fprintf\fP \fIplik\fP \fIformat\fP"
Prawda; podobne do \fB\-printf\fP, lecz zapisuje do \fIpliku\fP jak
\fB\-fprint\fP. Plik wyjściowy jest tworzony zawsze, nawet jeśli wskazanie nigdy
nie pasuje. W rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje
nt. obsługi nietypowych nazw plików.

.IP \fB\-ls\fP
Prawdziwe; wypisuje plik bieżący w formacie \fBls \-dils\fP na standardowe
wyjście.  Liczniki bloków są 1K blokami, chyba że ustawiono zmienną
środowiskową \fBPOSIXLY_CORRECT\fP, gdy używane będą 512\-bajtowe bloki. W
rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje nt. obsługi
nietypowych nazw plików.

.IP "\fB\-ok\fP \fIpolecenie\fP \fB;\fP"
Jak \fB\-exec\fP, lecz najpierw pyta użytkownika. Jeśli się on zgodzi \-
uruchamia polecenie. W przeciwnym wypadku jedynie zwraca fałsz. Gdy
polecenie jest uruchomione, standardowe wejście jest przekierowane z
\fI/dev/null\fP. Akcji nie można podać równocześnie z opcją \fB\-files0\-from\fP.

.IP
Odpowiedź na pytanie jest dopasowywane do pary wyrażeń regularnych, aby
określić, czy jest pozytywna czy negatywna. Wyrażenie to jest pozyskiwane z
systemu, jeśli ustawiona jest zmienna środowiskowa \fBPOSIXLY_CORRECT\fP, a w
przeciwnym wypadku \- z katalogu tłumaczeń komunikatów \fBfind\fP. Jeśli system
nie posiada odpowiednich definicji, użyta będzie własna definicja
\fBfind\fPa. W każdym przypadku, interpretacja wyrażenia regularnego będzie
zależała od zmiennej środowiskowej \fBLC_CTYPE\fP (klasy znakowe) i
\fBLC_COLLATE\fP (przedziały znaków i klasy równoważności).



.IP "\fB\-okdir\fP \fIpolecenie\fP \fB;\fP"
Jak \fB\-execdir\fP, lecz najpierw wyświetlane jest pytanie, podobnie jak przy
\fB\-ok\fP. Jeśli użytkownik nie zgodzi się, zwraca jedynie fałsz. Gdy polecenie
jest uruchomione, jego standardowe wejście jest przekierowane z
\fI/dev/null\fP. Akcji tej nie można łączyć z opcją \fB\-files0\-from\fP.


.IP \fB\-print\fP
Prawdziwe; wypisuje pełną nazwę pliku na standardowe wyjście razem ze
znakiem nowego wiersza. Jeśli wyjście \fBfind\fPa jest przekierowane za pomocą
potoku do innego programu i istnieje choć najmniejsza możliwość, że nazwa
jednego z przeszukiwanych plików może zawierać znak nowego wiersza, należy
się poważnie zastanowić, czy lepszym wyjściem nie będzie skorzystanie z
opcji \fB\-print0\fP, zamiast \fB\-print\fP. Rozdział \fBNIETYPOWE NAZWY PLIKÓW\fP
zawiera informacje nt. obsługi nietypowych znaków.

.IP \fB\-print0\fP
Prawdziwe; wypisuje pełną nazwę pliku na standardowe wyjście. Za nazwą daje
znak null (zamiast znaku nowego wiersza używanego przez \fB\-print\fP. Umożliwia
to poprawne wyświetlenie plików, zawierających w nazwach znaki nowej linii w
programach, przetwarzających wyjście \fBfind\fPa. Opcja ta odpowiada opcji
\fB\-0\fP programu \fBxargs\fP.

.IP "\fB\-printf\fP \fIformat\fP"
Prawdziwe; wypisuje \fIformat\fP na standardowe wyjście, interpretując
sekwencje specjalne "\e" i dyrektywy "%". Szerokości pól i precyzje mogą być
podawane dokładnie jak w funkcji \fBprintf\fP(3) z C. Proszę zauważyć, że wiele
z pól jest wypisywanych jako %s, a nie jako %d \- może to oznaczać, że flagi
nie będą działać zgodnie z oczekiwaniami. Oznacza to również, że flaga "\-"
działa (wymusza wyrównanie do lewej pól). W przeciwieństwie do \fB\-print\fP,
\fB\-printf\fP nie dodaje znaku nowego wiersza do końca łańcucha. Sekwencje
specjalne i dyrektywy to:
.RS
.IP \ea
Dzwonek.
.IP \eb
Backspace.
.IP \ec
Wstrzymuje wypisywanie tego formatu i natychmiast wymiata wyjście.
.IP \ef
Wysuw wiersza.
.IP \en
Nowy wiersz.
.IP \er
Powrót karetki.
.IP \et
Tabulacja pozioma.
.IP \ev
Tabulacja pionowa.
.IP \e0
ASCII NUL.
.IP \e\e
Literalny lewy ukośnik ("\e").
.IP \e\fINNN\fP
Znak o kodzie ASCII \fINNN\fP (ósemkowo).
.PP
"\e", za którym następuje dowolny inny znak, jest traktowany jak zwykły
znak, więc są wypisywane obydwa.
.IP %%
Literalny znak procenta.
.IP %a
Ostatni czas dostępu do pliku w formacie zwracanym przez funkcję \fBctime\fP(3)
C.
.IP %A\fIk\fP
Ostatni czas dostępu do pliku, w formacie określonym przez \fIk\fP, którym może
być "@", lub dyrektywa dla funkcji C \fBstrftime\fP(3). Niepełną listę
możliwych wartości \fIk\fP wymieniono niżej. W dokumentacji \fBstrftime\fP(3)
zamieszczono pełną listę. Niektóre ze znaków określających konwersję mogą
nie być dostępne na wszystkich systemach z powodu różnic w implementacji
funkcji bibliotecznej \fBstrftime\fP(3).
.RS
.IP @
Sekundy od 1 stycznia, 1970, 00:00 GMT, z częścią ułamkową.
.PP
Pola czasowe:
.IP H
godzina (00..23)
.IP I
godzina (01..12)
.IP k
godzina ( 0..23)
.IP l
godzina ( 1..12)
.IP M
minuta (00..59)
.IP p
przetłumaczone AM lub PM
.IP r
czas, 12\-godzinny (gg:mm:ss)
.IP S
Sekundy (00.00 \&..\& 61.00). Jest tu część ułamkowa.
.IP T
czas, 24\-godzinny (gg:mm:ss.xxxxxxxxxx)
.IP +
Data i czas, oddzielona "+" np "2004\-04\-28+22:22:05.0". Jest to rozszerzenie
GNU. Czas jest podany w bieżącej strefie czasowej (na którą wpływ może mieć
ustawiona zmienna środowiskowa \fBTZ\fP). Pole sekundowe zawiera część
ułamkową.
.IP X
lokalna reprezentacja czasu (G:M:S). Drugie pole zawiera część ułamkową.
.IP Z
strefa czasowa (np. EDT), lub nic jeśli nie da się jej określić
.PP
Pola daty:
.IP a
lokalny skrót nazwy tygodnia (nie..sob)
.IP A
lokalna pełna nazwa tygodnia, zmiennej długości (niedziela..sobota)
.IP b
lokalna skrócona nazwa miesiąca (sty..gru)
.IP B
lokalna pełna nazwa miesiąca, zmiennej długości (styczeń..grudzień)
.IP c
data i czas zgodnie z ustawieniami regionalnymi (sob, 4 lis 1989,
12:02:33). Format ten jest taki sam w przypadku \fBctime\fP(3) i w celu
zachowania z nim kompatybilności, nie ma tu części ułamkowej w polu sekund.
.IP d
dzień miesiąca (01..31)
.IP D
data (mm/dd/rr)
.IP F
data (rrrr\-mm\-dd)
.IP h
to samo co b
.IP j
dzień roku (001..366)
.IP m
miesiąc (01..12)
.IP U
numer tygodnia w roku, z niedzielą liczoną jako pierwszy dzień tygodnia
(00..53)
.IP w
dzień tygodnia (0..6)
.IP W
numer tygodnia w roku, licząc z poniedziałkiem, jako pierwszym dniem
tygodnia (00..53)
.IP x
lokalna reprezentacja daty (mm.dd.rrrr)
.IP y
ostatnie dwie cyfry roku (00..99)
.IP Y
rok (1970...\&)
.RE
.IP %b
Wielkość przestrzeni dysku, użyta dla tego pliku w blokach
512\-bajtowych. Ponieważ przestrzeń dyskowa jest alokowana w
wielokrotnościach rozmiaru bloku systemu plików, jest to zwykle więcej niż
%s/512, lecz może być to również mniej, gdy plik jest tzw. plikiem rzadkim.

.IP %B\fIk\fP
Czas utworzenia pliku (ang. birth time), w formacie określonym przez \fIk\fP,
który jest taki sam jak dla %A. Ta dyrektywa daje łańcuch pusty, jeśli dany
system operacyjny lub system plików nie obsługują czasów utworzenia pliku.

.IP %c
Ostatni czas zmiany statusu pliku, w formacie zwróconym przez funkcję
\fBctime\fP(3) z C.
.IP %C\fIk\fP
Ostatni czas zmiany statusu pliku w formacie określonym przez \fIk\fP, w taki
sam sposób, jak dla %A.
.IP %d
Głębokość pliku w drzewie katalogowym; 0 oznacza plik będący punktem
startowym.
.IP %D
Numer urządzenia, na którym istnieje plik (pole st_dev ze stat struct),
dziesiętnie.
.IP %f
Wypisuje nazwę bazową (ang. basename); nazwę pliku po usunięciu katalogów
(pozostawiono ostatni element). W przypadku \fB/\fP, wynikiem jest
"/". Przykład pokazano w rozdziale \fBPRZYKŁADY\fP.

.IP %F
Rodzaj systemu plików, na którym znajduje się plik; wartość ta może być
używana do \-fstype.
.IP %g
Nazwa grupy pliku lub numeryczny GID, jeśli grupa nie ma nazwy.
.IP %G
Numeryczny GID pliku.
.IP %h
Nazwa katalogu; początkowe katalogi z nazwy pliku (wszystkie, poza ostatnim
elementem). Jeśli nazwa pliku nie zawiera ukośników (ponieważ jest to
katalog bieżący), to %h daje ".". W przypadku plików, które same są katalogi
i zawierają ukośnik (w tym \fB/\fP), %h rozwija się do łańcucha
pustego. Przykład pokazano w rozdziale \fBPRZYKŁADY\fP.
.IP %H
Punkt początkowy, pod którym plik został znaleziony.
.IP %i
Numer i\-węzła pliku (dziesiętnie).
.IP %k
Wielkość przestrzeni dysku, użyta dla tego pliku w blokach o wielkości 1K
bajtów. Ponieważ przestrzeń dyskowa jest alokowana w wielokrotnościach
rozmiaru bloku systemu plików, jest to zwykle więcej niż %s/1024, lecz może
być to również mniej, gdy plik jest tzw. plikiem rzadkim.
.IP %l
Obiekt dowiązania symbolicznego (pusty łańcuch, jeśli plik nie jest
dowiązaniem symbolicznym).
.IP %m
Bity praw pliku (ósemkowo). Ta opcja korzysta z "tradycyjnych" liczb,
używanych przez większość implementacji Uniksowych, lecz jeśli dana, używana
obecnie implementacja, wykorzystuje dziwną kolejność ósemkowych bitów
uprawnień, widoczna będzie różnica pomiędzy prawami pliku i wynikiem
%m. Zwykle chce się tu użyć początkowego zera i aby to zrobić należy
skorzystać z flagi \fB#\fP (np. "%#m")
.IP %M
Uprawnienia pliku (w postaci symbolicznej, jak w \fBls\fP). Ta dyrektywa jest
obsługiwana przez findutils 4.2.5 i późniejsze.
.IP %n
Liczba twardych dowiązań do pliku.
.IP %p
Nazwa pliku.
.IP %P
Nazwa pliku z usuniętą nazwą punktu początkowego, dla którego ją znaleziono.
.IP %s
Rozmiar pliku w bajtach.
.IP %S
Rzadkość (dziurawość) pliku. Jest obliczana jako (ROZMIARBLOKU*st_blocks /
st_size). Dokładna wartość, jaką uzyska się dla danego zwykłego pliku o
określonej wielkości, jest zależna od systemu. Jednak pliki rzadkie będą
miały tę wartość zwykle mniejszą niż 1.0, a pliki używające bloków
pośrednich mogą mieć wartość większą niż 1.0. Liczba bloków użytych przez
plik zwykle zależy od systemu plików. Wartość użyta dla ROZMIARBLOKU zależy
od systemu, lecz najczęściej jest to 512. Jeśli rozmiar bloku wynosi zero,
wypisywana wartość jest niezdefiniowana. W systemach nieobsługujących
st_blocks, rzadkość pliku przyjmuje się na 1.0.
.IP %t
Ostatni czas modyfikacji pliku w formacie zwróconym przez funkcję
\fBctime\fP(3) z C.
.IP %T\fIk\fP
Ostatni czas modyfikacji pliku, w formacie określonym przez \fIk\fP, podobnie
jak dla %A.
.IP %u
Nazwa użytkownika pliku, lub numeryczny UID, jeśli użytkownik nie ma nazwy.
.IP %U
Numeryczny UID pliku.
.IP %y
Typ pliku (podobnie jak w \fBls \-l\fP), "U" to typ nieznany (ang. unknown, nie
powinien wystąpić).
.IP %Y
Typ pliku (jak %y), lecz podąża za dowiązaniami symbolicznymi: "L" to pętla
(ang. loop), "N" oznacza nieistniejący, natomiast "?" wystąpi dla każdego
innego błędu przy określaniu typu celu dowiązania symbolicznego.
.IP %Z
(tylko SELinux) kontekst bezpieczeństwa pliku.
.IP "%{ %[ %("
Zarezerwowane na przyszłość.
.PP
Znak "%" po którym występuje dowolny inny znak jest ignorowany, lecz ten
drugi znak jest wypisywany (nie należy na tym polegać, gdyż mogą zostać
wprowadzone nowe znaki formatu). Symbol "%" na końcu argumentu formatu
skutkuje niezdefiniowanym zachowaniem, ponieważ brak jest następnego
znaku. W niektórych ustawieniach regionalnych opcja ta może ukryć klucz do
domu, w innych usunąć ostatnią stronicę czytanej powieści. Ostrzegaliśmy!

Dyrektywy %m i %d obsługują flagi \fB#\fP, \fB0\fP i \fB+\fP, lecz inne dyrektywy
nie, nawet jeśli wyświetlają liczby. Do dyrektyw liczbowych, które nie
obsługują tych flag, należą \fBG\fP, \fBU\fP, \fBb\fP, \fBD\fP, \fBk\fP i \fBn\fP. Flaga
formatu "\-" jest obsługiwana i zmienia wyrównanie pól z prawego (domyślnego)
na lewy.
.PP
Rozdział \fBNIETYPOWE NAZWY PLIKÓW\fP zawiera informacje nt. obsługi
nietypowych nazw plików.


.RE
.IP \fB\-prune\fP
Prawda; jeśli plik jest katalogiem, nie zagłębia się w niego. Jeśli poda się
\fB\-depth\fP, to \fB\-prune\fP nie działa. Ponieważ \fB\-delete\fP wymusza \fB\-depth\fP,
nie da się sensownie połączyć \fB\-prune\fP i \fB\-delete\fP. Na przykład, aby
pominąć katalog \fIsrc/emacs\fP i wszystkie jego pliki i katalogi oraz wypisać
nazwy innych znalezionych plików, proszę użyć:
.in +4m
.nf
find . \-path ./src/emacs \-prune \-o \-print
.fi
.in


.IP \fB\-quit\fP
Natychmiast wychodzi (zwracając wartość zero, jeśli nie wystąpiły
błędy). Różni się to od \fB\-prune\fP ponieważ \fB\-prune\fP stosuje się tylko do
zawartości przyciętych katalogów, natomiast \fB\-quit\fP po prostu od razu
zatrzymuje \fBfind\fP. Nie pozostaną żadne działające procesy potomne. Przed
wyjściem programu, zostaną przywołane wiersze polecenia zbudowane za pomocą
\fB\-exec\ ...\ +\fP lub \fB\-execdir\ ...\ +\fP. Po wykonaniu \fB\-quit\fP, dalsze
pliki podane w wierszu polecenia nie zostaną przetworzone. Na przykład
"\fBfind\ \fP\fI/tmp/foo\fP\fB\ \fP\fI/tmp/bar\fP\fB\ \-print\ \-quit\fP" wypisze tylko
"/tmp/foo".
.br
Częstym zastosowaniem \fB\-quit\fP jest zatrzymanie przeszukiwania systemu
plików po odnalezieniu tego, czego szukano. Na przykład, aby znaleźć
pojedynczy plik, można podać:
.in +4m
.nf
find / \-name needle \-print \-quit
.fi
.in

.SS OPERATORY
Wymienione według malejącego priorytetu:

.IP "\fB(\fP \fIwyraż\fP \fB)\fP"
Wymusza pierwszeństwo. Ponieważ nawiasy są znakami specjalnymi dla powłoki,
trzeba je zwykle cytować. Wiele przykładów z niniejszej strony podręcznika
używa do tego celu odwrotnych ukośników: "\e(...\e)" zamiast "(...)".

.IP "\fB!\fP \fIwyraż\fP"
Prawda, jeśli \fIwyraż\fP jest fałszywe. Znak ten zwykle wymaga również ochrony
przed interpretacją przez powłokę.

.IP "\fB\-not\fP \fIwyraż\fP"
Jak \fB!\fP\& \fIwyraż\fP, lecz nie jest zgodne z POSIX.

.IP "\fIwyraż1 wyraż2\fP"
Dwa wyrażenia z rzędu są traktowane, jakby były połączone jawnym \fB\-a\fP;
\fIwyraż2\fP nie jest analizowany jeśli \fIwyraż1\fP jest fałszywe.

.IP "\fIwyraż1\fP \fB\-a\fP \fIwyraż2\fP"
To samo, co \fIwyraż1 wyraż2\fP.

.IP "\fIwyraż1\fP \fB\-and\fP \fIwyraż2\fP"
To samo, co \fIwyraż1 wyraż2\fP, lecz nie jest zgodne z POSIX.

.IP "\fIwyraż1\fP \fB\-o\fP \fIwyraż2\fP"
Lub ("or"); \fIwyraż2\fP nie jest analizowane jeśli \fIwyraż1\fP jest prawdziwe.

.IP "\fIwyraż1\fP \fB\-or\fP \fIwyraż2\fP"
To samo, co \fIwyraż1\fP \fB\-o\fP \fIwyraż2\fP, lecz nie jest zgodne z POSIX.

.IP "\fIwyraż1\fP \fB,\fP \fIwyraż2\fP"
Lista; zarówno \fIwyraż1\fP jak i \fIwyraż2\fP są zawsze analizowane. Wartość
\fIwyraż1\fP jest pomijana; wartością listy jest wartość \fIwyraż2\fP. Operator w
formie przecinka może być przydatny do wyszukiwania wielu różnych typów
rzeczy, lecz przechodząc przez hierarchię systemu plików tylko raz. Do
wypisania różnych dopasowań do wielu różnych plików wyjściowych, można użyć
akcji \fB\-fprintf\fP.
.P
Proszę zauważyć, że gdy \fB\-a\fP zostanie podane niejawnie (np. przy dwóch
testach bez określonego jawnie operatora między nimi) lub jawnie, ma
pierwszeństwo nad \fB\-o\fP. Oznacza to, że \fBfind . \-name plik\-a \-o \-name plik\-b \-print\fP nigdy nie wypisze \fIplik\-a\fP.
.
.SH "NIETYPOWE NAZWY PLIKÓW"
Wiele akcji \fBfind\fP skutkuje wypisywaniem danych, będących pod kontrolą
innych użytkowników. Dotyczy to nazw plików, rozmiarów, czasów modyfikacji
itp. Nazwy plików są potencjalnym problemem, ponieważ mogą zawierać dowolne
znaki oprócz "\e0" i "/". Nietypowe znaki w nazwach plików mogą robić
nieoczekiwane i często nieprzewidywalne rzeczy z terminalem użytkownika
(np. zmieniać ustawienia klawiszy funkcyjnych niektórych
terminali). Nietypowe znaki są obsługiwane w różny sposób, w zależności od
akcji, zgodnie z poniższym opisem.

.IP "\fB\-print0\fP, \fB\-fprint0\fP"
Zawsze wypisuje dokładne nazwy plików, niezmienione, nawet jeśli wynik
trafia na terminal

.IP "\fB\-ls\fP, \fB\-fls\fP"
Nietypowe znaki są zawsze cytowane. Białe znaki, odwrotny ukośnik i znak
podwójnego cudzysłowu jest wypisywany za pomocą cytowania w stylu C (np \ef
lub \e" ). Inne nietypowe znaki są wypisywane za pomocą cytowania
ósemkowego. Inne znaki drukowalne (dla \fB\-ls\fP i \fB\-fls\fP są to znaki pomiędzy
ósemkowym 041 i 0176) są wypisywane bez zmian.

.IP "\fB\-printf\fP, \fB\-fprintf\fP"
Jeśli wynik nie trafia na terminal, nic nie jest zmieniane. W przeciwnym
razie, wynik zależy od używanej dyrektywy. Dyrektywy %D, %F, %g, %G, %H, %Y
i %y są rozwijane do wartości, które nie są pod kontrolą właścicieli plików,
są więc wypisywane bez zmian. Dyrektywy %a, %b, %c, %d, %i, %k, %m, %M, %n,
%s, %t, %u i %U mają wartości będące pod kontrolą właścicieli plików, lecz
nie mogą być one użyte do wysłania dowolnych danych na terminal, dlatego są
wypisywane bez zmian. Dyrektywy %f, %h, %l, %p i %P są cytowane. Cytowanie
jest wykonywane w ten sam sposób, jak w GNU \fBls\fP. Nie jest to ten sam
mechanizm, co używany przez \fB\-ls\fP i \fB\-fls\fP. Jeśli można zdecydować o
formacie wyniku \fBfind\fP lepiej jest zwykle skorzystać z "\e0" jako
ogranicznika, zamiast używać znaku nowego wiersza, ponieważ nazwy plików
mogą zawierać białe znaki i znaki nowego wiersza. Ustawienie zmiennej
środowiskowej \fBLC_CTYPE\fP jest używane do określenia tego, które znaki mają
być cytowane.

.IP "\fB\-print\fP, \fB\-fprint\fP"
Cytowanie jest obsługiwane w ten sam sposób co w \fB\-printf\fP i
\fB\-fprintf\fP. Jeśli używa się \fBfind\fP w skrypcie lub w sytuacji, gdzie
dopasowywane pliki mogą mieć dowolne nazwy, powinno się rozważyć
skorzystanie z \fB\-print0\fP zamiast z \fB\-print\fP.
.P
Akcje \fB\-ok\fP i \fB\-okdir\fP wypisują bieżące nazwy plików bez zmian. Może się
to zmienić w kolejnych wydaniach.
.
.SH "ZGODNOŚĆ ZE STANDARDAMI"
W celu najściślejszej zgodności ze standardem POSIX, należy ustawić zmienną
środowiskową \fBPOSIXLY_CORRECT\fP. W standardzie POSIX (IEEE Std 1003.1\-2008,
2016 Edition) określono następujące opcje:

.IP \fB\-H\fP
Opcja jest obsługiwana.

.IP \fB\-L\fP
Opcja jest obsługiwana.

.IP \fB\-name\fP
Opcja jest obsługiwana, lecz zgodność z POSIX zależy od zgodności z POSIX
systemowej funkcji bibliotecznej \fBfnmatch\fP(3). Od wersji findutils\-4.2.2
metaznaki powłoki (np. "*", "?", "[]") dopasują początkowe ".", ponieważ
wymaga tego interpretacja 126 IEEE PASC. Jest to zmiana w stosunku do
poprzednich wersji findutils.

.IP \fB\-type\fP
Obsługiwane.  POSIX określa "b", "c", "d", "l", "p", "f" i "s". GNU find
obsługuje również "D", reprezentujące Door, w systemach, które to
obsługują. Co więcej, GNU find umożliwia jednoczesne podanie wielu typów w
liście rozdzielonej przecinkiem.

.IP \fB\-ok\fP
Obsługiwane. Interpretacja odpowiedzi jest zgodna z wzorcami "yes" i "no"
wybranymi przez ustawienie zmiennej środowiskowej \fBLC_MESSAGES\fP. Gdy
ustawiona jest zmienna środowiskowa \fBPOSIXLY_CORRECT\fP, wzorce te są wzięte
z systemowych definicji odpowiedzi pozytywnej (yes) lub negatywnej
(no). Proszę zapoznać się z systemową dokumentacją \fBnl_langinfo\fP(3), w
szczególności YESEXPR i NOEXPR. Gdy \fBPOSIXLY_CORRECT\fP nie jest ustawiona,
wzorce są brane z własnego katalogu komunikatów \fBfind\fP.

.IP \fB\-newer\fP
Obsługiwane. Jeśli podany plik jest dowiązaniem symbolicznym, jest zawsze
rozwiązywany. Jest to zmiana w stosunku do wcześniejszego zachowania, gdy
odpowiedni czas był brany z samego dowiązania; patrz poniższy rozdział
\fBHISTORIA\fP.

.IP \fB\-perm\fP
Obsługiwane. Jeśli zmienna środowiskowa \fBPOSIXLY_CORRECT\fP nie jest
ustawiona, część argumentów trybu (np. +a+x), która nie jest prawidłowa w
POSIX, jest obsługiwana w celu zachowania kompatybilności wstecznej.

.IP "Inne wskazania"
Wszystkie wskazania: \fB\-atime\fP, \fB\-ctime\fP, \fB\-depth\fP, \fB\-exec\fP, \fB\-group\fP,
\fB\-links\fP, \fB\-mtime\fP, \fB\-nogroup\fP, \fB\-nouser\fP, \fB\-ok\fP, \fB\-path\fP, \fB\-print\fP,
\fB\-prune\fP, \fB\-size\fP, \fB\-user\fP i \fB\-xdev\fP są obsługiwane.

.P
Standard POSIX określa nawiasy "(", ")", negację "!" i operatory logiczne
ORAZ/LUB \fB\-a\fP i \fB\-o\fP.
.P
Wszystkie inne opcje, wskazania, wyrażenia itd. są rozszerzeniami
wykraczającymi poza standard POSIX. Wiele z nich nie jest jednak unikalnych
dla GNU find.
.P
Standard POSIX wymaga wykrywania przez \fBfind\fP pętli:
.IP
Narzędzie \fBfind\fP powinno wykrywać pętle nieskończone, tj. gdy wchodzi do
wcześniej odwiedzonego katalogu, będącego przodkiem pliku, który wystąpił
jako ostatni. Gdy pętla nieskończona jest wykrywana, \fBfind\fP powinien
wypisać informację diagnostyczną na standardowe wyjście błędów i powinien
albo odzyskać swą pozycję w hierarchii albo wyjść.
.P
GNU \fBfind\fP jest zgodny z tymi wymaganiami. Liczba dowiązań katalogów
zawierających wpisy będące dowiązaniami zwykłymi (twardymi) do katalogu
nadrzędnego będzie często niższa, niż powinna być. Oznacza to, że GNU find
czasami zoptymalizuje liczbę sprawdzeń podkatalogów będących dowiązaniem do
katalogu nadrzędnego. Ponieważ \fBfind\fP nie wchodzi w rzeczywistości do
każdego podkatalogu, może unikać wyświetlania komunikatu
diagnostycznego. Choć to zachowanie może być niekiedy mylące, jest mało
prawdopodobne, aby ktokolwiek na nim polegał. Jeśli optymalizacja "liściowa"
(ang. leaf optimisation) zostanie wyłączona za pomocą \fB\-noleaf\fP, wpis
katalogu zostanie zawsze sprawdzony, a gdy to będzie konieczne, zostanie
wypisany komunikat diagnostyczny. Dowiązanie symboliczne nie może być użyte
do tworzenia podobnych cykli systemu plików, lecz jeśli działa opcja \fB\-L\fP
lub \fB\-follow\fP, komunikat diagnostyczny zostanie wypisany, gdy \fBfind\fP
natrafi na pętlę dowiązań symbolicznych. Podobnie jak w przypadku pętli z
dowiązaniami zwykłymi (twardymi), optymalizacja liściowa często będzie
oznaczać, że \fBfind\fP wie, iż nie musi wywoływać \fIstat()\fP lub \fIchdir()\fP na
dowiązaniu symbolicznym, więc taka diagnostyka często nie jest konieczna.
.P
Opcja \fB\-d\fP jest obsługiwana w celu kompatybilności z różnymi systemami BSD,
lecz powinno się w zamian używać zgodną z POSIX opcję \fB\-depth\fP.
.P
Zmienna środowiskowa \fBPOSIXLY_CORRECT\fP nie wpływa na zachowanie testów
\fB\-regex\fP ani \fB\-iregex\fP, ponieważ opcje te nie są określone w standardzie
POSIX.
.
.SH "ZMIENNE ŚRODOWISKOWE"

.IP LANG
Dostarcza domyślną wartość do zmiennych dotyczących umiędzynarodowienia,
które nie są ustawione lub są puste.

.IP \fBLC_ALL\fP
Jeśli jest ustawiona na niepusty łańcuch, przesłania wartość wszystkich
innych zmiennych dotyczących umiędzynarodowienia.

.IP \fBLC_COLLATE\fP
Standard POSIX określa, że ta zmienna wpływa na dopasowanie wzorców
używanych przez opcję \fB\-name\fP. GNU find używa funkcji bibliotecznej
\fBfnmatch\fP(3), w związku z tym obsługa \fBLC_COLLATE\fP zależy od biblioteki
systemowej. Zmienna ta wpływa również na interpretację odpowiedzi na \fB\-ok\fP
\- podczas gdy zmienna \fBLC_MESSAGES\fP wybiera rzeczywisty wzorzec używany do
interpretacji odpowiedzi na \fB\-ok\fP, interpretacja wyrażeń klamrowych we
wzorcu będzie zależna od \fBLC_COLLATE\fP.

.IP LC_CTYPE
Zmienna wpływa na traktowanie klas znaków używanych w wyrażeniach
regularnych, jak również w teście \fB\-name\fP, jeśli obsługuje to systemowa
funkcja biblioteczna \fBfnmatch\fP(3). Zmienna wpływa również na interpretację
klas znakowych w wyrażeniach regularnych używanych do interpretacji
odpowiedzi na pytanie wydane przez \fB\-ok\fP. Zmienna środowiskowa \fBLC_CTYPE\fP
wpływa również na to, które znaki są uważane za niedrukowalne przy
wypisywaniu nazw plików; patrz rozdział \fBNIETYPOWE NAZWY PLIKÓW\fP.

.IP \fBLC_MESSAGES\fP
Określa język (lokale) komunikatów. Jeśli ustawiona jest zmienna
środowiskowa \fBPOSIXLY_CORRECT\fP, to określa również interpretację na
odpowiedź na pytanie zadane przez akcję \fB\-ok\fP.

.IP \fBNLSPATH\fP
Określa lokalizację katalogów z przetłumaczonymi komunikatami.

.IP PATH
Wpływa na katalogi, które są przeszukiwane przez find w celu wykonania
plików wywołanych przez \fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP i \fB\-okdir\fP.

.IP \fBPOSIXLY_CORRECT\fP
Określa rozmiar bloku używany przez \fB\-ls\fP i \fB\-fls\fP. Jeśli ustawiona jest
zmienna \fBPOSIXLY_CORRECT\fP, bloki mają po 512 bajtów. W przeciwnym wypadku \-
1024 bajtów.
.IP
Ustawienie tej zmiennej domyślnie wyłącza również ostrzeżenia
(tzn. implikuje \fB\-nowarn\fP), ponieważ niezależnie od wyniku \fB\-ok\fP, POSIX
wymaga aby wszystkie komunikaty wypisywane na standardowe wyjście błędów
były diagnostyczne i wynikał z nich niezerowy kod zakończenia.
.IP
Gdy \fBPOSIXLY_CORRECT\fP nie jest ustawiona, \fB\-perm \fP\fI+zzz\fP jest traktowane
jak \fB\-perm \fP\fI/zzz\fP jeśli +zzz nie jest prawidłowym trybem
symbolicznym. Gdy POSIXLY_CORRECT jest ustawiona, takie konstrukcje są
traktowane jako błąd.
.IP
Gdy \fBPOSIXLY_CORRECT\fP jest ustawiona, odpowiedź na pytanie zadane przez
akcję  \fB\-ok\fP jest interpretowane zgodnie z katalogiem systemowym
wiadomości, a nie zgodnie z własnymi tłumaczeniami komunikatów programu
\fBfind\fP.

.IP \fBTZ\fP
Wpływa na strefę czasową używaną przez część związanych z czasem dyrektyw
formatu opcji \fB\-printf\fP i \fB\-fprintf\fP.
.
.SH PRZYKŁADY
.\" A bulleted \[bu] list of examples.
.SS "Prostsze podejście \(dqfind|xargs\(dq"
.IP \[bu]
Znajduje pliki o nazwie \fIcore\fP w lub poniżej katalogu \fI/tmp\fP i usuwa je.
.nf
\&
.in +4m
\fB$ find /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP
.in
\&
.fi
Proszę zauważyć, że przykład nie będzie działał poprawnie, jeśli w którejś z
nazw są znaki nowego wiersza, pojedyncze lub podwójne cudzysłowy lub spacje.
.
.SS "Bezpieczniejsze podejście \(dqfind \-print0 | xargs \-0\(dq"
.IP \[bu]
Znajduje pliki o nazwie \fIcore\fP w lub poniżej katalogu \fI/tmp\fP i usuwa je,
przetwarzając nazwy plików w ten sposób, że nazwy zawierające pojedyncze lub
podwójne cudzysłowy, spacji lub znaki nowego wiersza są obsługiwane
poprawnie.
.nf
\&
.in +4m
\fB$ find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP
.in
\&
.fi
Test \fB\-name\fP jest wykonywany przed testem \fB\-type\fP, aby zapobiec
wywoływaniu \fBstat\fP(2) na każdym pliku.
.PP
Proszę zauważyć, że pomiędzy momentem, gdy \fBfind\fP przechodzi przez drzewo
wypisując pasujące nazwy plików, a momentem, gdy proces wykonywany przez
\fBxargs\fP pracuje z tym plikiem, wciąż występuje wyścig.
.
.SS "Przetwarzanie dowolnych punktów początkowych"
.IP \[bu]
Zakładając, że inny program \fIproggy\fP filtruje wstępnie i tworzy dużą listę
plików rozdzielonych znakiem NUL, przetwarza je na punkty początkowe i
znajduje pośród nich wszystkie zwykłe, puste pliki:
.nf
\&
.in +4m
\fB$ proggy | find \-files0\-from \- \-maxdepth 0 \-type f \-empty\fP
.in
\&
.fi
Użycie \fB`\-files0\-from\ \-`\fP oznacza, że nazwy punktów początkowych są
odczytywane ze \fIstandardowego wejście\fP tj. z potoku; \fB\-maxdepth\ 0\fP
zapewnia, że sprawdzane są tylko jawnie podane wpisy, bez zagłębiania się w
katalogi (gdyby jeden z punktów początkowych takim był).
.
.SS "Wykonywanie polecenia dla każdego pliku"
.IP \[bu]
Uruchamia \fIfile\fP na każdym pliku w lub poniżej katalogu bieżącego.
.nf
\&
.in +4m
\fB$ find . \-type f \-exec plik \(aq{}\(aq \e;\fP
.in
\&
.fi
Proszę zwrócić uwagę, że nawiasy klamrowe są ujęte w pojedyncze cudzysłowy,
aby ochronić je przed interpretację przez interpunkcję skryptów
powłoki. Średnik jest również chroniony, przez odwrotny ukośnik, choć
pojedyncze cudzysłowy byłyby równie dobre.
.PP
Ze względu na wydajność i bezpieczeństwo w wielu przypadkach preferowana
może być składnia \fB`\-exec\ \&...\&\ +`\fP albo nawet lepiej \fB`\-execdir\ \&...\&\ +`\fP.
.
.SS "Przechodzenie przez system plików jednokrotnie \- wykonując 2 różne akcje"
.IP \[bu]
Przeszukuje system plików jeden raz, wypisując pliki i katalogi z
set\-user\-ID do pliku \fI/root/suid.txt\fP, a duże pliki do \fI/root/big.txt\fP.
.nf
\&
.in +4m
\fB$ find / \e\fP
.in +4m
\fB\e( \-perm \-4000 \-fprintf /root/suid.txt \(aq%#m %u %p\en\(aq \e) , \e\fP
.br
\fB\e( \-size +100M \-fprintf /root/big.txt \(aq%\-10s %p\en\(aq \e)\fP
.in -4m
.in -4m
\&
.fi
Przykład ten używa znaku kontynuacji wiersza "\e" w pierwszych dwóch
wierszach, by poinstruować powłokę, aby kontynuowała odczytywanie polecenia
z następnego wiersza.
.
.SS "Wyszukiwanie plików według wieku"
.IP \[bu]
Wyszukuje pliki w katalogu domowym użytkownika, które zostały zmodyfikowane
w ciągu ostatnich 24 godzin.
.nf
\&
.in +4m
\fB$ find $HOME \-mtime 0\fP
.in
\&
.fi
To polecenie działa w ten sposób, ponieważ czas od ostatniej modyfikacji
pliku jest podzielony przez 24 godziny, a reszta jest odrzucana. Oznacza to,
że aby pasować do \fB\-mtime 0\fP, plik musiał być zmodyfikowany mniej niż 24
godziny temu.
.
.SS "Wyszukiwanie plików według uprawnień"
.IP \[bu]
Wyszukuje pliki wykonywalne, lecz nieodczytywalne.
.nf
\&
.in +4m
\fB$ find /sbin /usr/sbin \-executable \e! \-readable \-print\fP
.in
\&
.fi
.
.IP \[bu]
Wyszukuje pliki posiadające prawa odczytu i zapisu dla właściciela i grupy,
które dla innych są odczytywalne, lecz nie są zapisywalne.
.nf
\&
.in +4m
\fB$ find . \-perm 664\fP
.in
\&
.fi
Pliki, które spełniają te kryteria lecz mają ustawione inne bity praw
(np. wykonywalności) nie są dopasowane.
.
.IP \[bu]
Wyszukuje pliki posiadające prawa odczytu i zapisu dla właściciela i grupy,
które dla innych są odczytywalne, bez względu na obecność jakichś
dodatkowych bitów praw (np. bitu wykonywalności).
.nf
\&
.in +4m
\fB$ find . \-perm \-664\fP
.in
\&
.fi
Dopasowany będzie też np. plik z trybem \fI0777\fP.
.
.IP \[bu]
Wyszukuje pliki, które są przez kogoś zapisywalne (dla ich właściciela,
grupy lub innych).
.nf
\&
.in +4m
\fB$ find . \-perm /222\fP
.in
\&
.fi
.
.IP \[bu]
Wyszukuje pliki, które są przez zapisywalne dla ich właściciela lub dla ich
grupy.
.nf
\&
.in +4m
\fB$ find . \-perm /220\fP
\fB$ find . \-perm /u+w,g+w\fP
\fB$ find . \-perm /u=w,g=w\fP
.in
\&
.fi
Wszystkie trzy polecenia wykonują to samo, lecz pierwsze używa reprezentacji
ósemkowej praw lików, a pozostałe dwa \- postaci symbolicznej. Pliki nie
muszą być zapisywalne zarówno przez właściciela jak i grupę, aby zostać
dopasowane; wystarczy spełnić jeden warunek.
.
.IP \[bu]
Wyszukuje pliki, które są zapisywalne dla ich właściciela oraz dla ich
grupy.
.nf
\&
.in +4m
\fB$ find . \-perm \-220\fP
\fB$ find . \-perm \-g+w,u+w\fP
.in
\&
.fi
Oba te polecenia robią to samo.
.
.IP \[bu]
Bardziej skomplikowane przeszukiwanie uprawnień.
.nf
\&
.in +4m
\fB$ find . \-perm \-444 \-perm /222 \e! \-perm /111\fP
\fB$ find . \-perm \-a+r \-perm /a+w \e! \-perm /a+x\fP
.in
\&
.fi
Oba polecenia wyszukują pliki odczytywalne dla wszystkich (\fB\-perm \-444\fP lub
\fB\-perm \-a+r\fP), mające ustawiony co najmniej jeden bit zapisu (\fB\-perm /222\fP
lub \fB\-perm /a+w\fP), lecz nie będące wykonywalne dla kogokolwiek (odpowiednio
\fB! \-perm /111\fP lub \fB! \-perm /a+x\fP).
.
.SS "Wycinanie \- pomijanie plików i podkatalogów"
.IP \[bu]
Polecenie to kopiuje zawartość \fI/source\-dir\fP do \fI/dest\-dir\fP, lecz pomija
pliki lub katalogi o nazwach \fI.snapshot\fP (i wszystko wewnątrz ich). Pomija
również pliki lub katalogi o nazwach kończących się na "\(ti", lecz nie ich
zawartość.
.nf
\&
.in +4m
\fB$ cd /source\-dir\fP
\fB$ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 \e) \e\fP
.br
.in +4m
\fB| cpio \-pmd0 /dest\-dir\fP
.in -4m
.in -4m
\&
.fi
Konstrukcja \fB\-prune\ \-o\ \e(\ \&...\&\ \-print0\ \e)\fP jest dość
częsta. Pomysł jest taki, że wyrażenie przed \fB\-prune\fP dopasowuje rzeczy,
które mają być wycięte. Jednak sama akcja \fB\-prune\fP zwraca prawdę, więc
kolejna \fB\-o\fP upewnia się, że prawa strona jest obliczana tylko dla
niewyciętych katalogów (zawartość wycinanych katalogów nie jest nawet
sprawdzana, więc ich zawartość jest nieistotna). Wyrażenie po prawej stronie
\fB\-o\fP, znajduje się w nawiasach jedynie dla przejrzystości. Podkreśla, że
akcja \fB\-print0\fP ma miejsce jedynie do rzeczy, do których nie zastosowano
\fB\-prune\fP. Ponieważ domyślna zależność "and" (i) jest ściślejsza niż \fB\-o\fP,
tak jest domyślnie, lecz nawiasy pomagają pokazać o co chodzi.
.
.IP \[bu]
Podając następujący katalog projektu i powiązany katalog administracyjny
SCM, wykonuje wydajne wyszukiwanie korzeni projektów:
.nf
\&
.in +4m
\fB$ find repo/ \e\fP
.in +4m
\fB\e( \-exec test \-d \(aq{}/.svn\(aq \e; \e\fP
\fB\-or \-exec test \-d \(aq{}/.git\(aq \e; \e\fP
\fB\-or \-exec test \-d \(aq{}/CVS\(aq \e; \e\fP
\fB\e) \-print \-prune\fP
.in -4m
.in -4m
\&
.fi
Przykładowe wyjście:
.nf
\&
.in +4m
\fBrepo/project1/CVS\fP
\fBrepo/gnu/project2/.svn\fP
\fBrepo/gnu/project3/.svn\fP
\fBrepo/gnu/project3/src/.svn\fP
\fBrepo/project4/.git\fP
.in
\&
.fi
W tym przykładzie, \fB\-prune\fP zapobiega niepotrzebnemu zagłębianiu się w już
odkryte katalogi (np. nie szuka się w \fIproject3/src\fP, ponieważ znaleziono
już \fIproject3/.svn\fP), lecz znajduje katalogi sąsiednie (\fIproject2\fP i
\fIproject3\fP).
.
.SS "Inne przydatne przykłady"
.IP \[bu]
Wyszukiwanie różnych typów plików.
.nf
\&
.in +4m
\fB$ find /tmp \-type f,d,l\fP
.in
\&
.fi
Wyszukuje pliki, katalogi i dowiązania symboliczne w katalogu \fI/tmp\fP,
przetwarzając te typy jako listę rozdzieloną przecinkiem (rozszerzenie GNU),
co jest odpowiednikiem dłuższego, lecz bardziej przenośnego:
.nf
\&
.in +4m
\fB$ find /tmp \e( \-type f \-o \-type d \-o \-type l \e)\fP
.in
\&
.fi
.
.IP \[bu]
Wyszukuje pliki o podanej nazwie \fIneedle\fP i zatrzymuje natychmiast po
znalezieniu pierwszego z nich.
.nf
\&
.in +4m
\fB$ find / \-name needle \-print \-quit\fP
.in
\&
.fi
.
.IP \[bu]
Pokazuje interpretację dyrektyw formatu \fB%f\fP i \fB%h\fP akcji \fB\-printf\fP dla
pewnych skrajnych przypadków. Oto przykład i nieco wyniku.
.nf
\&
.in +4m
\fB$ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find \-maxdepth 0 \-printf '[%h][%f]\en'\fP
\fB[.][.]\fP
\fB[.][..]\fP
\fB[][/]\fP
\fB[][tmp]\fP
\fB[/tmp][TRACE]\fP
\fB[.][compile]\fP
\fB[compile/64/tests][find]\fP
.in
\&
.fi
.
.SH "STATUS ZAKOŃCZENIA"
\fBfind\fP wychodzi ze statusem 0, gdy pomyślnie przetworzono wszystkie pliki i
większym niż 0, gdy wystąpił błąd. Jest to bardzo ogólny opis, lecz gdy
zwracaną wartością nie jest zero, nie powinno się po prostu polegać na
poprawności wyników \fBfind\fP.

Jeśli wystąpi jakiś błąd, \fBfind\fP może się natychmiast zatrzymać, bez
ukończenia wszystkich podanych akcji. Przykładowo, mogły nie zostać
sprawdzone pewne punkty początkowe lub oczekujące wywołania programu dla
\fB\-exec\ \&...\&\ {}\ +\fP lub \fB\-execdir\ \&...\&\ {}\ +\fP mogły nie zostać
wykonane.
.
.SH HISTORIA

Program \fBfind\fP pojawił się w 5 wersji Uniksa, jako część projektu
Programmer's Workbench i został napisany przez Dicka Haighta. \fIA Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971\-1986\fP
autorstwa Douga McIlroya opisuje pewne dodatkowe szczegóły, można przeczytać
go pod adresem <https://www.cs.dartmouth.edu/~doug/reader.pdf>.

GNU \fBfind\fP został pierwotnie napisany przez Erica Deckera, z ulepszeniami
autorstwa Davida MacKenziego, Jaya Pletta i Tima Wooda. Pomysł \fBfind \-print0\fP i \fBxargs \-0\fP pochodzi od Dana Bernsteina.
.
.SH ZGODNOŚĆ
Od findutils\-4.2.2, metaznaki powłoki (np. "*", "?" lub "[]") używane we
wzorcach nazw plików dopasują początkowe ".", ponieważ wymaga tego
interpretacja 126 IEEE POSIX.
.P
Od findutils\-4.3.3, \fB\-perm\ /000\fP dopasowuje wszystkie pliki, zamiast
żadnego.
.P
W findutils\-4.3.3 zaimplementowano nanosekundową rozdzielczość znaczników
czasu.
.P
Od findutils\-4.3.11, akcja \fB\-delete\fP ustawia kod zakończenia \fBfind\fP na
wartość niezerową, jeśli się nie powiedzie. \fBfind\fP nie wyjdzie jednak od
razu. Wcześniej, kod zakończenia \fBfind\fP nie zmieniał się pod wpływem
niepowodzenia \fB\-delete\fP.
.TS
l l l .
Funkcja	Dodana w	Pojawia się też w
\-files0\-from	4.9.0
\fB\-newerXY\fP	4.3.3	BSD
\fB\-D\fP	4.3.1
\fB\-O\fP	4.3.1
\fB\-readable\fP	4.3.0
\fB\-writable\fP	4.3.0
\fB\-executable\fP	4.3.0
\fB\-regextype\fP	4.2.24
\fB\-exec ... +\fP	4.2.12	POSIX
\fB\-execdir\fP	4.2.12	BSD
\fB\-okdir\fP	4.2.12
\fB\-samefile\fP	4.2.11
\fB\-H\fP	4.2.5	POSIX
\fB\-L\fP	4.2.5	POSIX
\fB\-P\fP	4.2.5	BSD
\fB\-delete\fP	4.2.3
\fB\-quit\fP	4.2.3
\fB\-d\fP	4.2.3	BSD
\fB\-wholename\fP	4.2.0
\fB\-iwholename\fP	4.2.0
\fB\-ignore_readdir_race\fP	4.2.0
\fB\-fls\fP	4.0
\fB\-ilname\fP	3.8
\fB\-iname\fP	3.8
\fB\-ipath\fP	3.8
\fB\-iregex\fP	3.8
.TE
.P
Składnia \fB\-perm +TRYB\fP została usunięta w findutils\-4.5.12 na korzyść
\fB\-perm /TRYB\fP. Składnia \fB+TRYB\fP była uznawana za przestarzałą od findutils
findutils\-4.2.21, wydanego w 2005 r.
.
.SH "TO NIE SĄ BŁĘDY"
.SS "Zaskakująca kolejność operatorów"
Polecenie \fBfind . \-name plik\-a \-o \-name plik\-b \-print\fP nigdy nie wypisze
\fIplik\-a\fP, ponieważ faktycznie odpowiada ono \fBfind . \-name plik\-a \-o \e( \-name plik\-b \-a \-print \e)\fP. Proszę pamiętać, że \fB\-a\fP ma pierwszeństwo
przed \fB\-o\fP, a gdy nie poda się operatora między testami, przyjmowane jest
\fB\-a\fP.
.SS "Błąd \[Bq]ścieżki muszą poprzedzać wyrażenie\[rq]"
.nf
\fB$ find . \-name *.c \-print\fP
find: ścieżki muszą poprzedzać wyrażenie
find: czyżby nie zacytowany wzorzec po wyrażeniu `\-name'?
.fi
.P
Zdarza się to, gdy powłoka mogłaby rozwinąć wzorzec \fI*.c\fP do więcej niż
jednej nazwy istniejącej w bieżącym katalogu, a przekazanie wynikowych nazw
plików w wierszu polecenia do \fBfind\fP wyglądałoby tak:
.nf
.
\fBfind . \-name frcode.c locate.c word_io.c \-print\fP
.
.fi
Takie polecenie oczywiście nie zadziała, ponieważ wskazanie \fB\-name\fP pozwala
na podanie tylko pojedynczego wzorca jako argumentu. Zamiast robienia tego w
ten sposób, należy ująć wzorzec w cudzysłowy lub zacytować wieloznacznik, w
sposób pozwalając programowi \fBfind\fP na użycie wzorca z wieloznacznikiem
przy wyszukiwaniu pasującej nazwy pliku, zamiast pozwalać na interpretowanie
go przez powłokę nadrzędną:
.nf
\fB$ find . \-name \(aq*.c\(aq \-print\fP
\fB$ find . \-name \e*.c \-print\fP
.fi
.
.SH USTERKI
Występują pewne zagrożenia związane z bezpieczeństwem, będące wynikiem tego,
co standard POSIX przewiduje dla \fBfind\fP \- dlatego nie mogą być
naprawione. Na przykład akcja \fB\-exec\fP jest niebezpieczna i powinno się
używać w zamian \fB\-execdir\fP.
.
.P
Zmienna środowiskowa \fBLC_COLLATE\fP nie ma wpływu na akcję \fB\-ok\fP.
.
.SH ZGŁASZANIE BŁĘDÓW
Strona internetowa z pomocą GNU findutils:
<https://www.gnu.org/software/findutils/#get\-help>
.br
O błędach tłumaczenia programu prosimy poinformować przez
<https://translationproject.org/team/pl.html>
.PP
Wszelkie inne problemy prosimy zgłaszać za pomocą systemu śledzenia błędów
GNU Savannah:
.RS
<https://savannah.gnu.org/bugs/?group=findutils>
.RE
Do ogólnej dyskusji na tematy związane z pakietem GNU findutils służy lista
dyskusyjna \fIbug\-findutils\fP:
.RS
<https://lists.gnu.org/mailman/listinfo/bug\-findutils>
.RE
.
.SH PRAWA AUTORSKIE
Copyright \(co 1990\(en2024 Free Software Foundation, Inc. Licencja GPLv3+:
GNU GPL w wersji 3 lub późniejszej
<https://gnu.org/licenses/gpl.html>.
.br
Jest to wolne oprogramowanie: można je zmieniać i rozpowszechniać. Nie ma
ŻADNEJ GWARANCJI, w granicach określonych przez prawo.
.
.SH "ZOBACZ TAKŻE"
\fBchmod\fP(1), \fBlocate\fP(1), \fBls\fP(1), \fBupdatedb\fP(1), \fBxargs\fP(1),
\fBlstat\fP(2), \fBstat\fP(2), \fBctime\fP(3)  \fBfnmatch\fP(3), \fBprintf\fP(3),
\fBstrftime\fP(3), \fBlocatedb\fP(5), \fBregex\fP(7)
.PP
Pełna dokumentacja: <https://www.gnu.org/software/findutils/find>
.br
albo dostępna lokalnie przez: \fBinfo find\fP
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
Przemek Borys <pborys@dione.ids.pl>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
