Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       find - szuka plików w drzewie katalogów

SKŁADNIA

       find [-H] [-L] [-P] [-D opcje-debugowania] [-Opoziom] [punkt-początkowy...] [wyrażenie]

OPIS

       Ta  strona  podręcznika  man  opisuje  wersję GNU programu find.  GNU find 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 and, a prawdziwa dla or), co powoduje przejście do następnej nazwy pliku. Jeśli nie
       podano punktu początkowego, przyjmuje się ".".

       W przypadku używania find 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ą Finding Files. 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.

OPCJE

       Opcje -H, -L i -P 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 -print (lecz wówczas i tak zapewne lepsze
       byłoby skorzystanie z -print0).

       Niniejsza strona podręcznika opisuje "opcje" w liście wyrażeń. Opcje te kontrolują zachowanie find,  lecz
       są  podane zaraz za ostatnią nazwą ścieżkową. Z kolei pięć "prawdziwych" opcji (-H, -L, -P, -D i -O) musi
       pojawić się przed ścieżką, oczywiście jeśli okażą się potrzebne.  Podwójny  dywiz  --  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  find  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 find 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  find,  jest
       korzystanie z opcji GNU -files0-from

       -P     Nigdy nie podąża za dowiązaniami symbolicznymi. Jest to zachowanie domyślne. Gdy find 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.

       -L     Podąża  za  dowiązaniami  symbolicznymi.  Gdy  find 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 find nie może sprawdzić
              pliku, na który wskazuje dowiązanie). Użycie tej opcji implikuje -noleaf. Jeśli użyje się  później
              -P,  to  -noleaf  wciąż  będzie  działać.  Jeśli  działa  -L,  a find podczas wyszukiwania odkryje
              dowiązanie symboliczne do podkatalogu, to  przeszukany  zostanie  podkatalog,  na  który  wskazuje
              dowiązanie.

              Gdy  działa  opcja -L, to wskazanie -type 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  find  (np.  -delete)  mogą
              spowodować  dezorientujące  zachowanie.  Użycie -L spowoduje, że wskazanie -lname i -ilname zawsze
              zwróci fałsz.

       -H     Nie podąża za dowiązaniami symbolicznymi, z wyjątkiem przetwarzania argumentów wiersza  polecenia.
              Gdy  find  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 -H i
              jedna ze  ścieżek  podanych  w  wierszu  polecenia  jest  dowiązaniem  symbolicznym  do  katalogu,
              sprawdzana jest zawartość tego katalogu (zapobiegnie temu skorzystanie z -maxdepth 0).

       Jeśli  podano  więcej  niż  jedną  z  opcji -H, -L i -P, każda przesłania poprzednią - liczy się ostatnia
       podana w wierszu polecenia, Ponieważ opcja -P jest domyślna, powinno się ją uznać za działającą, chyba że
       podano -H lub -L.

       GNU find 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 -P (lub nie
       podano -H, ani  -L),  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
       find 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.

       Gdy  działa  opcja  -H  lub  -L, rozwiązywane są wszystkie dowiązania symboliczne podane jako argument do
       opcji -newer, a znaczniki czasowe będą wzięte z pliku, na który wskazuje dowiązanie symboliczne. To  samo
       dotyczy opcji -newerXY, -anewer i -cnewer.

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

       -D debugopts
              Wyświetla  informacje  diagnostyczne - może okazać się przydatna do zdiagnozowania przypadków, gdy
              find 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 find -D help. Są to między innymi:

              exec   Wyświetla informacje diagnostyczne związane z -exec, -execdir, -ok i -okdir.

              opt    Wyświetla informacje diagnostyczne związane z optymalizację drzewka  wyrażeń;  patrz  opcja
                     -O.

              rates  Wyświetla podsumowanie wskazujące częstość sukcesu lub porażki każdego wskazania.

              search Informuje o przechodzeniu przez drzewo katalogów.

              stat   Wyświetla komunikaty o plikach sprawdzanych przez wywołania systemowe stat i lstat. Program
                     find stara się zminimalizować liczbę takich wywołań.

              tree   Wyświetla drzewko wyrażeń w formie oryginalnej i zoptymalizowanej.

              all    Włącza wszystkie inne opcje debugowania (poza help).

              help   Objaśnia opcje debugowania.

       -Opoziom
              Włącza  optymalizację  zapytań.  Program find 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.

              0      Odpowiednik poziomu optymalizacji 1.

              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. -name
                     lub -regex) są wykonywane jako pierwsze.

              2      Testy -type lub -xtype 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 readdir(), a więc są szybsze do  sprawdzenia  niż  wskazówki,
                     które  wymagają uprzedniego wykonania stat. Jeśli korzysta się z wskazań -fstype FOO i poda
                     się typ systemu plików FOO, który nie jest znany (tj. nieobecny w "/etc/mtab")  w  momencie
                     uruchomienia find, wskazanie to będzie równoważne -false.

              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  -o,  wskazania  o większym prawdopodobieństwie
                     sukcesu są przeprowadzane wcześniej,  a  przy  -a,  wcześniej  wykonywane  są  wskazania  o
                     większym prawdopodobieństwie niepowodzenia.

              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. -type f powinien kończyć się sukcesem częściej niż -type c). Optymalizator jest jeszcze
              w  fazie  kalkulacji.  Jeśli  nie poprawi to wydajności programu find, 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  find  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 -readable i -empty są wrażliwe
              na   zmianę   kolejności.   Jeśli   zostaną   uruchomione   w  kolejności  -empty  -readable,  dla
              nieodczytywalnych katalogów zostanie wypisany błąd. Z kolei w  kolejności  -readable  -empty  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.

WYRAŻENIE

       Część wiersza poleceń  po  liście  punktów  początkowych  jest  wyrażeniem.  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:

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

       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 -print wypisuje na  przykład
              nazwę bieżącego pliku na standardowym wyjściu.

       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 -depth powoduje, że find przechodzi przez
              system plików, zagłębiając się najpierw w katalogach.

       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 -regextype jest pozycyjna, określa dialekt wyrażeń regularnych,
              dla wyrażeń regularnych, które pojawią się dalej w wierszu polecenia.

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

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

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

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

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

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

       -regextype typ
              Zmienia składnię wyrażeń regularnych rozumianych przez testy -regex i  -iregex  podane  później  w
              wierszu  poleceń.  Znane  typy  wyrażeń  regularnych wypisze -regextype help. Dokumentacja Texinfo
              (zob. ZOBACZ TAKŻE) 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 emacs.

       -warn, -nowarn
              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  find podczas przeszukiwania katalogów. Domyślne zachowanie
              odpowiada -warn gdy standardowym wejściem jest tty i -nowarn 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
              find.  Jeśli  ustawiono  zmienną  środowiskową  POSIXLY_CORRECT  i  podano  również -warn nie jest
              określone które, ani czy w ogóle, ostrzeżenia będą aktywne.

   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, find 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. -L.

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

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

       -files0-from plik
              Odczytuje punkty początkowe z pliku 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 find.

              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  plik  jest  obowiązkowy.  Można  użyć postaci -files0-from -, aby odczytać listę punktów
              początkowych ze strumienia standardowego wejścia  i  np.  z  potoku.  W  takim  przypadku  nie  są
              dozwolone  akcje  -ok  i -okdir, ponieważ oczywiście kolidowałyby z odczytywaniem ze standardowego
              wejścia w celu uzyskania potwierdzeń od użytkownika.

              Punkty początkowe w pliku 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  plik  będzie  pusty,  find  nie  przetworzy  punktu  początkowego,  zatem   wyjdzie
              bezpośrednio  po  przetworzeniu  argumentów programu. Różni się to od standardowego wywołania find
              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. find przejdzie
              rekurencyjnie  do  podkatalogów,  o  ile  nie  wskazano  inaczej.  Aby  przetworzyć  tylko  punktu
              początkowe, można podać dodatkowo -maxdepth 0.

              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  find,  wynik
              jest  również  nieokreślony. Dodatkowo, pozycja przeszukania w nazwanym pliku, w momencie gdy find
              wyjdzie, ze względu na -quit 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 findutils.

       -help, --help
              Wypisuje sposób użycia find z wiersza poleceń i kończy pracę programu.

       -ignore_readdir_race
              Zwykle find wyświetla błąd, gdy nie uda mu się pobrać  statusu  pliku.  Po  podaniu  tej  opcji  i
              usunięciu  pliku  pomiędzy  odczytem  przez  find 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 find, jeden raz z opcją  włączoną,  a  drugi  -  z
              wyłączoną).

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

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

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

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

       -noignore_readdir_race
              Wyłącza efekt opcji -ignore_readdir_race.

       -noleaf
              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  find 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.

       -version, --version
              Wypisuje wersję i kończy pracę.

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

   TESTY
       Niektóre testy np. -newerXY i -samefile 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 -H, -L i -P i podanej wcześniej -follow, lecz plik odniesienia jest sprawdzany tylko raz,
       przy  przetwarzaniu  wiersza  polecenia. Jeśli plik odniesienia nie może zostać sprawdzony (np. wywołanie
       systemowe stat(2) nie powiedzie się na nim), wyświetlany jest błąd, a find wychodzi  z  niezerowym  kodem
       zakończenia.

       Do  testów  (takich  jak  -amin,  -mtime,  -gid, -inum, -links, -size, -uid i -used) można podać argument
       numeryczny n jako

       +n     dla większych niż n,

       -n     dla mniejszych niż n,

       n      dla równych n.

       Obsługiwane testy:

       -amin n
              Dostęp do pliku nastąpił ostatnio wcześniej niż, dawniej niż lub dokładnie n minut temu.

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

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

       -cmin n
              Status pliku został zmieniony wcześniej niż, później niż lub dokładnie n minut temu.

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

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

       -empty Plik jest pusty i jest albo zwykłym plikiem, albo katalogiem.

       -executable
              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  -perm.   Ten  test używa wywołania systemowego
              access(2) i może być zmylony przez serwery NFS używające mapowania UID (lub root-squashing),  gdyż
              wiele systemów implementuje access(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 access(2), nie ma
              gwarancji, że plik dla którego test się powiódł, może być w rzeczywistości wykonany.

       -false Zawsze fałszywe.

       -fstype typ
              Plik jest na systemie plików o typie typ. 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: ufs, 4.2,
              4.3, nfs, tmp, mfs, S51K, S52K.  Aby zobaczyć typy swoich systemów plików, należy użyć  -printf  z
              dyrektywą %F.

       -gid n Numeryczny GID pliku, który wynosi mniej niż, więcej niż lub dokładnie n.

       -group nazwag
              Plik należy do grupy nazwag (numeryczny GID jest dopuszczalny).

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

       -iname pattern
              Podobnie jak -name, 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'.

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

       -ipath wzorzec
              Podobne do -path, lecz dopasowanie jest niewrażliwe na rozmiar liter.

       -iregex wzorzec
              Podobne do -regex, lecz dopasowanie jest niewrażliwe na rozmiar liter.

       -ilname pattern
              Patrz -ipath. Ta alternatywa jest mniej przenośna niż wspomniana opcja.

       -links n
              Plik ma mniej niż, więcej niż lub dokładnie n dowiązań zwykłych (twardych).

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

       -mmin n
              Dane pliku były ostatnio modyfikowane wcześniej niż, później niż lub dokładnie n minut temu.

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

       -name wzorzec
              Bazowa nazwa pliku ("basename", ścieżka z usuniętymi poprzedzającymi katalogami) pasuje do  wzorca
              powłoki  wzorzec.  Z  powodu  usunięcia  początkowych  katalogów,  wzorzec  nie  powinien zawierać
              ukośnika, ponieważ "-name a/b" nigdy niczego nie dopasuje (i raczej powinno się wtedy użyć -path).
              Wyjątkiem jest użycie jako wzorca 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ą POSIXLY_CORRECT, albo użyto opcji -nowarn.

              Do  zignorowania  katalogu  i  podrzędnych  mu plików, zamiast sprawdzania każdego pliku w drzewie
              należy użyć -prune, 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
              fnmatch(3). Proszę nie zapomnieć ująć wzorca w cudzysłowy, aby  zapobiec  interpretacji  go  przez
              powłokę.

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

       -newerXY odniesienie
              Powodzi  się,  jeśli  znacznik  czasu  X  rozważanego pliku jest nowszy niż znacznik czasu Y pliku
              odniesienia. Litery X i Y mogą być dowolnymi z poniższych:

              a   Czas dostępu (ang. access) pliku odniesienie
              B   Czas powstania (ang. birth) pliku odniesienie
              c   Czas zmiany (ang. change) statusu i-węzła odniesienia
              m   Czas modyfikacji pliku odniesienie
              t   odniesienie jest interpr. bezpośrednio jako czas (ang. time)

              Niektóre  kombinacje  są  nieprawidłowe,  np.  X  nie  może  być  t.  Część  kombinacji  nie  jest
              zaimplementowanych  we  wszystkich systemach, do takich należy np. B. Jeśli poda się nieprawidłową
              lub  nieobsługiwaną  kombinację  XY,  otrzymuje  się  błąd  krytyczny.   Określenia   czasowe   są
              interpretowane jak argument do opcji -d GNU date. 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.

       -nogroup
              Do numerycznego GID pliku nie pasuje żadna grupa.

       -nouser
              Do numerycznego UID pliku nie pasuje żaden użytkownik.

       -path wzorzec
              Nazwa pliku odpowiada wzorcowi powłoki wzorzec. Metaznaki nie traktują specjalnie "/" lub "."; tak
              więc na przykład,
                  find . -path "./sr*sc"
              Wypisze  wpis  dla  katalogu o nazwie ./src/misc (jeśli taki istnieje). Aby zignorować całe drzewo
              katalogu, zamiast sprawdzać każdy plik w drzewie, należy użyć -prune.  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.
                  find bar -path /foo/bar/myfile -print
              Find  porównuje  argument  -path  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
              -path kończące się ukośnikiem niczego nie dopasują (może za wyjątkiem punktu początkowego podanego
              w wierszu polecenia). Wskazanie -path jest również obsługiwane find HP-UX i jest częścią standardu
              POSIX 2008.

       -perm prawa
              Bity  praw  pliku  są  dokładnie  takie, jak prawa (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 PRZYKŁADY.

       -perm -prawa
              Wszystkie  bity  praw  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 PRZYKŁADY.

       -perm /prawa
              Ustawiony jest dowolny z bitów  praw  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 PRZYKŁADY. Jeśli nie ustawiono bitów praw w trybie, to test dopasuje każdy plik
              (zgodnie z zamysłem, aby pozostać w zgodzie z zachowaniem -perm -000).

       -perm +prawa
              Nie jest już obsługiwane (a było przestarzałe od 2005 roku). Proszę użyć w zamian -perm /tryb.

       -readable
              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 -perm ignoruje. Ten test używa
              wywołania systemowego access(2) i może być zmylony przez serwery NFS używające mapowania UID  (lub
              root-squashing),  gdyż  wiele  systemów  implementuje  access(2)  w jądrze klienta i nie może użyć
              informacji mapowania UID po stronie serwera.

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

       -samefile nazwa
              Plik odnosi się do tego samego i-węzła co nazwa. Gdy  działa  opcja  -L,  obejmuje  to  dowiązania
              symboliczne.

       -size n[c|w|b|k|M|G]
              Plik  używa  mniej  niż,  więcej niż lub dokładnie n jednostek miejsca, zaokrąglając w górę. Można
              dodać następujące przyrostki:

              b      bloki 512-bajtowe (wartość domyślna, gdy nie użyto przyrostka)

              c      bajty

              w      słowa dwubajtowe

              k      kibibajty (KiB, jednostka 1024 bajtów)

              M      mebibajty (MiB, jednostka 1024 * 1024 = 1048576 bajtów)

              G      gibibajty (GiB, jednostka 1024 * 1024 * 1024 = 1073741824 bajtów)

              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 ls -l. Proszę pamiętać, że określenia formatu "%k" i  "%b"  akcji  -printf  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 -ls.

              Przedrostki + i - oznaczają odpowiednio, większy i mniejszy, wedle zwykłych reguł tj. gdy dokładny
              rozmiar n 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  -size -1M  nie  jest równoważne -size -1048576c. Pierwszy
              dopasuje tylko puste pliki, a drugi dopasuje pliki od 0 do 1 048 575 bajtów.

       -true  Zawsze prawda.

       -type c
              Plik jest typu c:

              b      blokowy (buforowany) plik specjalny

              c      znakowy (niebuforowany) plik specjalny (ang. character)

              d      katalog (ang. directory)

              p      potok nazwany (FIFO)

              f      zwykły plik

              l      dowiązanie symboliczne (link); nigdy nie jest to prawda, gdy działa opcja -L  lub  -foolow,
                     chyba  że dowiązanie jest zerwane. Aby wyszukiwać dowiązania symboliczne przy korzystaniu z
                     opcji -L, należy użyć -xtype.

              s      gniazdo

              D      door (Solaris)

              Aby odszukać jednocześnie więcej niż jeden typ, można podać listę liter rozdzielonych  przecinkiem
              "," (rozszerzenie GNU).

       -uid n Numeryczny UID pliku wynosi mniej niż, więcej niż lub dokładnie n.

       -used n
              Do  pliku  ostatnio  dostano  się  wcześniej  niż, dawniej niż lub dokładnie n dni po zmianie jego
              statusu.

       -user unazwa
              Właścicielem pliku jest użytkownik unazwa (numeryczny UID jest tu dozwolony).

       -wholename wzorzec
              Patrz -path. Ta alternatywa jest mniej przenośna niż wspomniana opcja.

       -writable
              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 -perm.  Ten test używa wywołania
              systemowego access(2)  i  może  być  zmylony  przez  serwery  NFS  używające  mapowania  UID  (lub
              root-squashing),  gdyż  wiele  systemów  implementuje  access(2)  w jądrze klienta i nie może użyć
              informacji mapowania UID po stronie serwera.

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

       -context wzorzec
              (tylko SELinux) Kontekst bezpieczeństwa pliku dopasowanego przez wzorzec typu glob.

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

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

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

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

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

              Razem z opcją -ignore_readdir_race find zignoruje  błędy  akcji  -delete  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 -delete będzie prawda.

       -exec polecenie ;
              Wykonuje polecenie; prawdziwe jeśli zwrócony został status 0. Wszelkie następne argumenty find  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 find.  Obydwie
              te konstrukcje być może będą wymagały zacytowania (znakiem "\") aby uchronić je przed rozwinięciem
              przez powłokę. Więcej  informacji  na  temat  użycia  opcji  -exec,  zawiera  rozdział  PRZYKŁADY.
              Polecenie  jest  wykonywane  w  katalogu  startowym.  W  związku  z  akcją  -exec  występują pewne
              nieuniknione zagrożenia związane z bezpieczeństwem, należy zamiast niej używać -execdir.

       -exec polecenie {} +
              Ten wariant akcji -exec, 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 xargs 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  "\"
              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, find zwróci niezerowy status zakończenia. Jeśli find 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  -exec moje-polecenie ... {} + -quit  może  nie spowodować faktycznego
              wykonania mojego-polecenia. Ten wariant -exec zawsze zwraca prawdę.

       -execdir polecenie ;

       -execdir polecenie {} +
              Podobnie jak -exec, lecz podane polecenie jest uruchamiane z podkatalogu zawierającego  dopasowany
              plik,  który  nie  jest  zwykle tożsamy z katalogiem, w którym uruchomiono find. 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 -exec, postać z "+" -execdir zbuduje  wiersz  poleceń
              aby  przetworzyć  więcej  niż  jeden  dopasowany plik, lecz każde dane wywołanie polecenia wypisze
              jedynie pliki, które istnieją w tym  samym  podkatalogu.  Przy  używaniu  tej  opcji,  trzeba  się
              upewnić,  że  zmienna  środowiskowa $PATH 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  -execdir.  To  samo  tyczy  się  wpisów  w $PATH, 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,  find  zwróci niezerowy status zakończenia. Jeśli find 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  +  czy  ;,  bowiem
              -execdir polecenie {} + zawsze zwróci  prawdę,  natomiast  -execdir polecenie {} ;  zwróci  prawdę
              tylko, jeśli polecenie zwróci 0.

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

       -fprint plik
              Prawdziwe; wypisuje pełną nazwę pliku do pliku. Jeśli plik nie istnieje w czasie  działania  find,
              zostanie  utworzony;  jeśli  istnieje, zostanie obcięty. Nazwy plików /dev/stdout i /dev/stderr 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
              NIETYPOWE NAZWY PLIKÓW znajdują się informacje nt. obsługi nietypowych nazw plików.

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

       -fprintf plik format
              Prawda; podobne do -printf, lecz zapisuje do pliku  jak  -fprint.  Plik  wyjściowy  jest  tworzony
              zawsze,  nawet  jeśli  wskazanie nigdy nie pasuje. W rozdziale NIETYPOWE NAZWY PLIKÓW znajdują się
              informacje nt. obsługi nietypowych nazw plików.

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

       -ok polecenie ;
              Jak -exec, 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 /dev/null. Akcji nie można podać równocześnie z opcją -files0-from.

              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 POSIXLY_CORRECT, a w przeciwnym wypadku -  z  katalogu  tłumaczeń  komunikatów  find.
              Jeśli  system  nie  posiada  odpowiednich definicji, użyta będzie własna definicja finda. W każdym
              przypadku, interpretacja wyrażenia regularnego będzie zależała od zmiennej środowiskowej  LC_CTYPE
              (klasy znakowe) i LC_COLLATE (przedziały znaków i klasy równoważności).

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

       -print Prawdziwe;  wypisuje  pełną  nazwę  pliku  na standardowe wyjście razem ze znakiem nowego wiersza.
              Jeśli wyjście finda 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
              -print0,   zamiast  -print.  Rozdział  NIETYPOWE  NAZWY  PLIKÓW  zawiera  informacje  nt.  obsługi
              nietypowych znaków.

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

       -printf format
              Prawdziwe;  wypisuje  format  na  standardowe  wyjście,  interpretując  sekwencje  specjalne "\" i
              dyrektywy "%". Szerokości pól i precyzje mogą być podawane dokładnie jak w funkcji printf(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 -print, -printf nie dodaje znaku nowego wiersza do
              końca łańcucha. Sekwencje specjalne i dyrektywy to:

              \a     Dzwonek.

              \b     Backspace.

              \c     Wstrzymuje wypisywanie tego formatu i natychmiast wymiata wyjście.

              \f     Wysuw wiersza.

              \n     Nowy wiersz.

              \r     Powrót karetki.

              \t     Tabulacja pozioma.

              \v     Tabulacja pionowa.

              \0     ASCII NUL.

              \\     Literalny lewy ukośnik ("\").

              \NNN   Znak o kodzie ASCII NNN (ósemkowo).

              "\", za którym następuje dowolny inny znak, jest traktowany jak zwykły znak,  więc  są  wypisywane
              obydwa.

              %%     Literalny znak procenta.

              %a     Ostatni czas dostępu do pliku w formacie zwracanym przez funkcję ctime(3) C.

              %Ak    Ostatni  czas  dostępu  do  pliku,  w formacie określonym przez k, którym może być "@", lub
                     dyrektywa dla funkcji C strftime(3). Niepełną listę możliwych wartości k wymieniono  niżej.
                     W  dokumentacji  strftime(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 strftime(3).

                     @      Sekundy od 1 stycznia, 1970, 00:00 GMT, z częścią ułamkową.

                     Pola czasowe:

                     H      godzina (00..23)

                     I      godzina (01..12)

                     k      godzina ( 0..23)

                     l      godzina ( 1..12)

                     M      minuta (00..59)

                     p      przetłumaczone AM lub PM

                     r      czas, 12-godzinny (gg:mm:ss)

                     S      Sekundy (00.00 .. 61.00). Jest tu część ułamkowa.

                     T      czas, 24-godzinny (gg:mm:ss.xxxxxxxxxx)

                     +      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 TZ). Pole sekundowe zawiera część ułamkową.

                     X      lokalna reprezentacja czasu (G:M:S). Drugie pole zawiera część ułamkową.

                     Z      strefa czasowa (np. EDT), lub nic jeśli nie da się jej określić

                     Pola daty:

                     a      lokalny skrót nazwy tygodnia (nie..sob)

                     A      lokalna pełna nazwa tygodnia, zmiennej długości (niedziela..sobota)

                     b      lokalna skrócona nazwa miesiąca (sty..gru)

                     B      lokalna pełna nazwa miesiąca, zmiennej długości (styczeń..grudzień)

                     c      data  i czas zgodnie z ustawieniami regionalnymi (sob, 4 lis 1989, 12:02:33). Format
                            ten jest taki sam w przypadku ctime(3) i w celu zachowania  z  nim  kompatybilności,
                            nie ma tu części ułamkowej w polu sekund.

                     d      dzień miesiąca (01..31)

                     D      data (mm/dd/rr)

                     F      data (rrrr-mm-dd)

                     h      to samo co b

                     j      dzień roku (001..366)

                     m      miesiąc (01..12)

                     U      numer tygodnia w roku, z niedzielą liczoną jako pierwszy dzień tygodnia (00..53)

                     w      dzień tygodnia (0..6)

                     W      numer  tygodnia  w  roku,  licząc  z  poniedziałkiem,  jako pierwszym dniem tygodnia
                            (00..53)

                     x      lokalna reprezentacja daty (mm.dd.rrrr)

                     y      ostatnie dwie cyfry roku (00..99)

                     Y      rok (1970...)

              %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.

              %Bk    Czas utworzenia pliku (ang. birth time), w formacie określonym przez k, 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.

              %c     Ostatni czas zmiany statusu pliku, w formacie zwróconym przez funkcję ctime(3) z C.

              %Ck    Ostatni czas zmiany statusu pliku w formacie określonym przez k, w taki sam sposób, jak dla
                     %A.

              %d     Głębokość pliku w drzewie katalogowym; 0 oznacza plik będący punktem startowym.

              %D     Numer urządzenia, na którym istnieje plik (pole st_dev ze stat struct), dziesiętnie.

              %f     Wypisuje  nazwę  bazową  (ang.  basename); nazwę pliku po usunięciu katalogów (pozostawiono
                     ostatni element).  W  przypadku  /,  wynikiem  jest  "/".  Przykład  pokazano  w  rozdziale
                     PRZYKŁADY.

              %F     Rodzaj systemu plików, na którym znajduje się plik; wartość ta może być używana do -fstype.

              %g     Nazwa grupy pliku lub numeryczny GID, jeśli grupa nie ma nazwy.

              %G     Numeryczny GID pliku.

              %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 /), %h rozwija się do
                     łańcucha pustego. Przykład pokazano w rozdziale PRZYKŁADY.

              %H     Punkt początkowy, pod którym plik został znaleziony.

              %i     Numer i-węzła pliku (dziesiętnie).

              %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.

              %l     Obiekt   dowiązania   symbolicznego   (pusty  łańcuch,  jeśli  plik  nie  jest  dowiązaniem
                     symbolicznym).

              %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 # (np. "%#m")

              %M     Uprawnienia pliku (w postaci symbolicznej, jak w ls). Ta dyrektywa jest  obsługiwana  przez
                     findutils 4.2.5 i późniejsze.

              %n     Liczba twardych dowiązań do pliku.

              %p     Nazwa pliku.

              %P     Nazwa pliku z usuniętą nazwą punktu początkowego, dla którego ją znaleziono.

              %s     Rozmiar pliku w bajtach.

              %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.

              %t     Ostatni czas modyfikacji pliku w formacie zwróconym przez funkcję ctime(3) z C.

              %Tk    Ostatni czas modyfikacji pliku, w formacie określonym przez k, podobnie jak dla %A.

              %u     Nazwa użytkownika pliku, lub numeryczny UID, jeśli użytkownik nie ma nazwy.

              %U     Numeryczny UID pliku.

              %y     Typ pliku (podobnie jak w  ls  -l),  "U"  to  typ  nieznany  (ang.  unknown,  nie  powinien
                     wystąpić).

              %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.

              %Z     (tylko SELinux) kontekst bezpieczeństwa pliku.

              %{ %[ %(
                     Zarezerwowane na przyszłość.

              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  #, 0 i +, lecz inne dyrektywy nie, nawet jeśli wyświetlają
              liczby. Do dyrektyw liczbowych, które nie obsługują tych flag, należą G, U, b, D,  k  i  n.  Flaga
              formatu "-" jest obsługiwana i zmienia wyrównanie pól z prawego (domyślnego) na lewy.

              Rozdział NIETYPOWE NAZWY PLIKÓW zawiera informacje nt. obsługi nietypowych nazw plików.

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

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

   OPERATORY
       Wymienione według malejącego priorytetu:

       ( wyraż )
              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:
              "\(...\)" zamiast "(...)".

       ! wyraż
              Prawda, jeśli wyraż jest fałszywe. Znak ten zwykle  wymaga  również  ochrony  przed  interpretacją
              przez powłokę.

       -not wyraż
              Jak ! wyraż, lecz nie jest zgodne z POSIX.

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

       wyraż1 -a wyraż2
              To samo, co wyraż1 wyraż2.

       wyraż1 -and wyraż2
              To samo, co wyraż1 wyraż2, lecz nie jest zgodne z POSIX.

       wyraż1 -o wyraż2
              Lub ("or"); wyraż2 nie jest analizowane jeśli wyraż1 jest prawdziwe.

       wyraż1 -or wyraż2
              To samo, co wyraż1 -o wyraż2, lecz nie jest zgodne z POSIX.

       wyraż1 , wyraż2
              Lista; zarówno wyraż1 jak i wyraż2 są zawsze analizowane. Wartość wyraż1 jest pomijana;  wartością
              listy  jest  wartość  wyraż2. 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 -fprintf.

       Proszę  zauważyć,  że  gdy  -a  zostanie  podane niejawnie (np. przy dwóch testach bez określonego jawnie
       operatora między nimi) lub jawnie, ma pierwszeństwo nad -o. Oznacza to, że find . -name plik-a  -o  -name
       plik-b -print nigdy nie wypisze plik-a.

NIETYPOWE NAZWY PLIKÓW

       Wiele akcji find 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  "\0"  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.

       -print0, -fprint0
              Zawsze wypisuje dokładne nazwy plików, niezmienione, nawet jeśli wynik trafia na terminal

       -ls, -fls
              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 \f lub \" ). Inne nietypowe znaki są  wypisywane
              za  pomocą  cytowania  ósemkowego.  Inne  znaki  drukowalne  (dla  -ls i -fls są to znaki pomiędzy
              ósemkowym 041 i 0176) są wypisywane bez zmian.

       -printf, -fprintf
              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  ls.  Nie
              jest  to  ten sam mechanizm, co używany przez -ls i -fls. Jeśli można zdecydować o formacie wyniku
              find lepiej jest zwykle skorzystać z "\0" jako ogranicznika, zamiast używać znaku nowego  wiersza,
              ponieważ  nazwy  plików  mogą  zawierać  białe  znaki  i znaki nowego wiersza. Ustawienie zmiennej
              środowiskowej LC_CTYPE jest używane do określenia tego, które znaki mają być cytowane.

       -print, -fprint
              Cytowanie jest obsługiwane w ten sam sposób co w -printf  i  -fprintf.  Jeśli  używa  się  find  w
              skrypcie  lub  w  sytuacji, gdzie dopasowywane pliki mogą mieć dowolne nazwy, powinno się rozważyć
              skorzystanie z -print0 zamiast z -print.

       Akcje -ok i -okdir wypisują bieżące nazwy plików bez zmian. Może się to zmienić w kolejnych wydaniach.

ZGODNOŚĆ ZE STANDARDAMI

       W celu najściślejszej zgodności ze standardem POSIX, należy ustawić zmienną środowiskową POSIXLY_CORRECT.
       W standardzie POSIX (IEEE Std 1003.1-2008, 2016 Edition) określono następujące opcje:

       -H     Opcja jest obsługiwana.

       -L     Opcja jest obsługiwana.

       -name  Opcja jest obsługiwana, lecz zgodność z POSIX zależy  od  zgodności  z  POSIX  systemowej  funkcji
              bibliotecznej  fnmatch(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.

       -type  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.

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

       -newer 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ł HISTORIA.

       -perm  Obsługiwane. Jeśli zmienna środowiskowa POSIXLY_CORRECT 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.

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

       Standard POSIX określa nawiasy "(", ")", negację "!" i operatory logiczne ORAZ/LUB -a i -o.

       Wszystkie  inne  opcje,  wskazania,  wyrażenia itd. są rozszerzeniami wykraczającymi poza standard POSIX.
       Wiele z nich nie jest jednak unikalnych dla GNU find.

       Standard POSIX wymaga wykrywania przez find pętli:

              Narzędzie find 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, find powinien wypisać informację diagnostyczną na standardowe wyjście błędów i powinien
              albo odzyskać swą pozycję w hierarchii albo wyjść.

       GNU  find  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ż find 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ą -noleaf, 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 -L lub -follow,  komunikat  diagnostyczny  zostanie  wypisany,  gdy  find
       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 find wie, iż nie musi wywoływać stat()  lub
       chdir() na dowiązaniu symbolicznym, więc taka diagnostyka często nie jest konieczna.

       Opcja  -d  jest  obsługiwana  w  celu  kompatybilności z różnymi systemami BSD, lecz powinno się w zamian
       używać zgodną z POSIX opcję -depth.

       Zmienna środowiskowa POSIXLY_CORRECT nie wpływa na zachowanie testów -regex ani -iregex,  ponieważ  opcje
       te nie są określone w standardzie POSIX.

ZMIENNE ŚRODOWISKOWE

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

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

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

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

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

       NLSPATH
              Określa lokalizację katalogów z przetłumaczonymi komunikatami.

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

       POSIXLY_CORRECT
              Określa  rozmiar  bloku  używany  przez  -ls i -fls. Jeśli ustawiona jest zmienna POSIXLY_CORRECT,
              bloki mają po 512 bajtów. W przeciwnym wypadku - 1024 bajtów.

              Ustawienie tej zmiennej domyślnie wyłącza również ostrzeżenia (tzn. implikuje  -nowarn),  ponieważ
              niezależnie od wyniku -ok, POSIX wymaga aby wszystkie komunikaty wypisywane na standardowe wyjście
              błędów były diagnostyczne i wynikał z nich niezerowy kod zakończenia.

              Gdy  POSIXLY_CORRECT  nie jest ustawiona, -perm +zzz jest traktowane jak -perm /zzz jeśli +zzz nie
              jest prawidłowym trybem symbolicznym. Gdy POSIXLY_CORRECT jest  ustawiona,  takie  konstrukcje  są
              traktowane jako błąd.

              Gdy   POSIXLY_CORRECT   jest  ustawiona,  odpowiedź  na  pytanie  zadane  przez  akcję   -ok  jest
              interpretowane zgodnie z katalogiem systemowym wiadomości, a nie zgodnie z własnymi  tłumaczeniami
              komunikatów programu find.

       TZ     Wpływa  na strefę czasową używaną przez część związanych z czasem dyrektyw formatu opcji -printf i
              -fprintf.

PRZYKŁADY

   Prostsze podejście "find|xargs"
       •      Znajduje pliki o nazwie core w lub poniżej katalogu /tmp i usuwa je.

                  $ find /tmp -name core -type f -print | xargs /bin/rm -f

              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.

   Bezpieczniejsze podejście "find -print0 | xargs -0"
       •      Znajduje  pliki o nazwie core w lub poniżej katalogu /tmp 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.

                  $ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

              Test -name jest wykonywany przed testem -type, aby zapobiec wywoływaniu stat(2) na każdym pliku.

       Proszę  zauważyć, że pomiędzy momentem, gdy find przechodzi przez drzewo wypisując pasujące nazwy plików,
       a momentem, gdy proces wykonywany przez xargs pracuje z tym plikiem, wciąż występuje wyścig.

   Przetwarzanie dowolnych punktów początkowych
       •      Zakładając, że inny program proggy 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:

                  $ proggy | find -files0-from - -maxdepth 0 -type f -empty

              Użycie `-files0-from -` oznacza, że nazwy punktów początkowych  są  odczytywane  ze  standardowego
              wejście  tj.  z  potoku;  -maxdepth 0  zapewnia,  że  sprawdzane są tylko jawnie podane wpisy, bez
              zagłębiania się w katalogi (gdyby jeden z punktów początkowych takim był).

   Wykonywanie polecenia dla każdego pliku
       •      Uruchamia file na każdym pliku w lub poniżej katalogu bieżącego.

                  $ find . -type f -exec plik '{}' \;

              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.

       Ze względu na wydajność i bezpieczeństwo w wielu przypadkach preferowana może być składnia  `-exec ... +`
       albo nawet lepiej `-execdir ... +`.

   Przechodzenie przez system plików jednokrotnie - wykonując 2 różne akcje
       •      Przeszukuje  system  plików  jeden  raz,  wypisując  pliki  i  katalogi  z  set-user-ID  do  pliku
              /root/suid.txt, a duże pliki do /root/big.txt.

                  $ find / \
                      \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
                      \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)

              Przykład ten używa znaku kontynuacji wiersza "\" w pierwszych  dwóch  wierszach,  by  poinstruować
              powłokę, aby kontynuowała odczytywanie polecenia z następnego wiersza.

   Wyszukiwanie plików według wieku
       •      Wyszukuje  pliki  w katalogu domowym użytkownika, które zostały zmodyfikowane w ciągu ostatnich 24
              godzin.

                  $ find $HOME -mtime 0

              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 -mtime 0, plik musiał być
              zmodyfikowany mniej niż 24 godziny temu.

   Wyszukiwanie plików według uprawnień
       •      Wyszukuje pliki wykonywalne, lecz nieodczytywalne.

                  $ find /sbin /usr/sbin -executable \! -readable -print

       •      Wyszukuje  pliki  posiadające  prawa odczytu i zapisu dla właściciela i grupy, które dla innych są
              odczytywalne, lecz nie są zapisywalne.

                  $ find . -perm 664

              Pliki, które spełniają te kryteria lecz mają ustawione inne bity praw (np. wykonywalności) nie  są
              dopasowane.

       •      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).

                  $ find . -perm -664

              Dopasowany będzie też np. plik z trybem 0777.

       •      Wyszukuje pliki, które są przez kogoś zapisywalne (dla ich właściciela, grupy lub innych).

                  $ find . -perm /222

       •      Wyszukuje pliki, które są przez zapisywalne dla ich właściciela lub dla ich grupy.

                  $ find . -perm /220
                  $ find . -perm /u+w,g+w
                  $ find . -perm /u=w,g=w

              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.

       •      Wyszukuje pliki, które są zapisywalne dla ich właściciela oraz dla ich grupy.

                  $ find . -perm -220
                  $ find . -perm -g+w,u+w

              Oba te polecenia robią to samo.

       •      Bardziej skomplikowane przeszukiwanie uprawnień.

                  $ find . -perm -444 -perm /222 \! -perm /111
                  $ find . -perm -a+r -perm /a+w \! -perm /a+x

              Oba  polecenia  wyszukują  pliki  odczytywalne  dla wszystkich (-perm -444 lub -perm -a+r), mające
              ustawiony co najmniej jeden bit zapisu (-perm /222 lub -perm /a+w), lecz  nie  będące  wykonywalne
              dla kogokolwiek (odpowiednio ! -perm /111 lub ! -perm /a+x).

   Wycinanie - pomijanie plików i podkatalogów
       •      Polecenie  to kopiuje zawartość /source-dir do /dest-dir, lecz pomija pliki lub katalogi o nazwach
              .snapshot (i wszystko wewnątrz ich). Pomija również pliki lub katalogi o nazwach kończących się na
              "~", lecz nie ich zawartość.

                  $ cd /source-dir
                  $ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \
                      | cpio -pmd0 /dest-dir

              Konstrukcja -prune -o \( ... -print0 \) jest dość częsta. Pomysł jest  taki,  że  wyrażenie  przed
              -prune  dopasowuje  rzeczy,  które  mają być wycięte. Jednak sama akcja -prune zwraca prawdę, więc
              kolejna -o 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  -o,  znajduje  się  w  nawiasach  jedynie dla przejrzystości. Podkreśla, że akcja
              -print0 ma miejsce jedynie do  rzeczy,  do  których  nie  zastosowano  -prune.  Ponieważ  domyślna
              zależność "and" (i) jest ściślejsza niż -o, tak jest domyślnie, lecz nawiasy pomagają pokazać o co
              chodzi.

       •      Podając  następujący  katalog  projektu  i powiązany katalog administracyjny SCM, wykonuje wydajne
              wyszukiwanie korzeni projektów:

                  $ find repo/ \
                      \( -exec test -d '{}/.svn' \; \
                      -or -exec test -d '{}/.git' \; \
                      -or -exec test -d '{}/CVS' \; \
                      \) -print -prune

              Przykładowe wyjście:

                  repo/project1/CVS
                  repo/gnu/project2/.svn
                  repo/gnu/project3/.svn
                  repo/gnu/project3/src/.svn
                  repo/project4/.git

              W tym przykładzie, -prune zapobiega niepotrzebnemu zagłębianiu się w już odkryte katalogi (np. nie
              szuka się w project3/src, ponieważ znaleziono już project3/.svn), lecz znajduje katalogi sąsiednie
              (project2 i project3).

   Inne przydatne przykłady
       •      Wyszukiwanie różnych typów plików.

                  $ find /tmp -type f,d,l

              Wyszukuje pliki, katalogi i dowiązania symboliczne w katalogu /tmp,  przetwarzając  te  typy  jako
              listę  rozdzieloną przecinkiem (rozszerzenie GNU), co jest odpowiednikiem dłuższego, lecz bardziej
              przenośnego:

                  $ find /tmp \( -type f -o -type d -o -type l \)

       •      Wyszukuje pliki o podanej nazwie needle i zatrzymuje natychmiast po znalezieniu pierwszego z nich.

                  $ find / -name needle -print -quit

       •      Pokazuje interpretację dyrektyw formatu %f i %h akcji -printf dla  pewnych  skrajnych  przypadków.
              Oto przykład i nieco wyniku.

                  $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n'
                  [.][.]
                  [.][..]
                  [][/]
                  [][tmp]
                  [/tmp][TRACE]
                  [.][compile]
                  [compile/64/tests][find]

STATUS ZAKOŃCZENIA

       find  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 find.

       Jeśli  wystąpi jakiś błąd, find 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
       -exec ... {} + lub -execdir ... {} + mogły nie zostać wykonane.

HISTORIA

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

       GNU find został pierwotnie napisany przez Erica Deckera, z  ulepszeniami  autorstwa  Davida  MacKenziego,
       Jaya Pletta i Tima Wooda. Pomysł find -print0 i xargs -0 pochodzi od Dana Bernsteina.

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.

       Od findutils-4.3.3, -perm /000 dopasowuje wszystkie pliki, zamiast żadnego.

       W findutils-4.3.3 zaimplementowano nanosekundową rozdzielczość znaczników czasu.

       Od findutils-4.3.11, akcja -delete ustawia kod zakończenia find  na  wartość  niezerową,  jeśli  się  nie
       powiedzie.  find nie wyjdzie jednak od razu. Wcześniej, kod zakończenia find nie zmieniał się pod wpływem
       niepowodzenia -delete.
       Funkcja                Dodana w   Pojawia się też w
       -files0-from           4.9.0
       -newerXY               4.3.3      BSD
       -D                     4.3.1
       -O                     4.3.1
       -readable              4.3.0
       -writable              4.3.0
       -executable            4.3.0
       -regextype             4.2.24
       -exec ... +            4.2.12     POSIX
       -execdir               4.2.12     BSD
       -okdir                 4.2.12
       -samefile              4.2.11
       -H                     4.2.5      POSIX
       -L                     4.2.5      POSIX
       -P                     4.2.5      BSD
       -delete                4.2.3
       -quit                  4.2.3
       -d                     4.2.3      BSD
       -wholename             4.2.0
       -iwholename            4.2.0
       -ignore_readdir_race   4.2.0
       -fls                   4.0
       -ilname                3.8
       -iname                 3.8
       -ipath                 3.8
       -iregex                3.8

       Składnia -perm +TRYB została usunięta w findutils-4.5.12 na korzyść  -perm  /TRYB.  Składnia  +TRYB  była
       uznawana za przestarzałą od findutils findutils-4.2.21, wydanego w 2005 r.

TO NIE BŁĘDY

   Zaskakująca kolejność operatorów
       Polecenie  find  .  -name  plik-a  -o  -name  plik-b -print nigdy nie wypisze plik-a, ponieważ faktycznie
       odpowiada ono find . -name  plik-a  -o  \(  -name  plik-b  -a  -print  \).  Proszę  pamiętać,  że  -a  ma
       pierwszeństwo przed -o, a gdy nie poda się operatora między testami, przyjmowane jest -a.

   Błąd „ścieżki muszą poprzedzać wyrażenie”
       $ find . -name *.c -print
       find: ścieżki muszą poprzedzać wyrażenie
       find: czyżby nie zacytowany wzorzec po wyrażeniu `-name'?

       Zdarza się to, gdy powłoka mogłaby rozwinąć wzorzec *.c do więcej niż jednej nazwy istniejącej w bieżącym
       katalogu, a przekazanie wynikowych nazw plików w wierszu polecenia do find wyglądałoby tak:
       find . -name frcode.c locate.c word_io.c -print
       Takie  polecenie  oczywiście nie zadziała, ponieważ wskazanie -name 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 find na użycie wzorca z wieloznacznikiem przy  wyszukiwaniu
       pasującej nazwy pliku, zamiast pozwalać na interpretowanie go przez powłokę nadrzędną:
       $ find . -name '*.c' -print
       $ find . -name \*.c -print

USTERKI

       Występują pewne zagrożenia związane z bezpieczeństwem, będące wynikiem tego, co standard POSIX przewiduje
       dla  find  -  dlatego  nie  mogą być naprawione. Na przykład akcja -exec jest niebezpieczna i powinno się
       używać w zamian -execdir.

       Zmienna środowiskowa LC_COLLATE nie ma wpływu na akcję -ok.

ZGŁASZANIE BŁĘDÓW

       Strona internetowa z pomocą GNU findutils: <https://www.gnu.org/software/findutils/#get-help>
       O błędach tłumaczenia programu prosimy poinformować przez <https://translationproject.org/team/pl.html>

       Wszelkie inne problemy prosimy zgłaszać za pomocą systemu śledzenia błędów GNU Savannah:
              <https://savannah.gnu.org/bugs/?group=findutils>
       Do ogólnej dyskusji na tematy związane z pakietem GNU findutils służy lista dyskusyjna bug-findutils:
              <https://lists.gnu.org/mailman/listinfo/bug-findutils>

PRAWA AUTORSKIE

       Copyright © 1990–2024 Free Software Foundation, Inc. Licencja GPLv3+: GNU GPL w wersji 3 lub  późniejszej
       <https://gnu.org/licenses/gpl.html>.
       Jest  to  wolne oprogramowanie: można je zmieniać i rozpowszechniać. Nie ma ŻADNEJ GWARANCJI, w granicach
       określonych przez prawo.

ZOBACZ TAKŻE

       chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2),  ctime(3)   fnmatch(3),  printf(3),
       strftime(3), locatedb(5), regex(7)

       Pełna dokumentacja: <https://www.gnu.org/software/findutils/find>
       albo dostępna lokalnie przez: info find

TŁUMACZENIE

       Tłumaczenie   niniejszej   strony  podręcznika:  Przemek  Borys  <pborys@dione.ids.pl>  i  Michał  Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

                                                                                                         FIND(1)