FIND(1)

NAZWA
find - szuka plików w hierarchii katalogowej

SKŁADNIA
find [ścieżka...] [wyrażenie]

OPIS
Ta strona podręcznika man opisuje wersję GNU programu find. find przeszukuje drzewo katalogowe, zakorzenione w każdej z podanych nazw plików. Wykonuje przy tym podane wyrażenie od lewej do prawej, zgodnie z zasadami priorytetów (zobacz sekcję 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.

Pierwszy argument, rozpoczynający się od `-', `(', `)', `,' lub `!' jest uważany za początek wyrażenia; wszelkie argumenty przed nim są ścieżkami przeszukiwania, a wszystkie argumenty po nim są resztą wyrażenia. Jeśli nie podano ścieżek, używany jest katalog bieżący. Jeśli nie podano wyrażenia, używane jest wyrażenie `-print'.

find kończy działanie ze statusem 0 tylko gdy wszystkie pliki zostaną poprawnie przetworzone. W przeciwnym wypadku status jest większy od zera.

WYRAŻENIA

Wyrażenie jest złożone z opcji (które tyczą się raczej ogólnego działania, niż przetwarzania konkretnego pliku i zawsze zwracają prawdę), testów (które sprawdzają wartość prawdy lub fałszu) i akcji (które mają efekty uboczne i zwracają wartość prawdziwą lub fałszywą); wszystkie te elementy są rozdzielone operatorami. -and jest domyślnym operatorem, przyjmowanym w przypadku pominięcia go w jawnym zapisie. Jeśli wyrażenie nie zawiera innych akcji niż -prune, to na wszystkich plikach, dla których jest ono prawdziwe, wykonywany jest -print.

  OPCJE

Wszystkie opcje zawsze zwracają prawdę. Zawsze działają, tzn. nie są przetwarzane jedynie gdy osiągnięta zostanie ich pozycja w wyrażeniu. Dlatego, dla jasności najlepiej umiejscawiać je na początku wyrażenia.

-daystart
    Mierzy czasy (dla -amin, -atime, -cmin, -ctime, -mmin, and -mtime) od dziś, a nie od 24 godzin temu.

-depth
    Przetwarza zawartość każdego katalogu przed samym katalogiem jako takim.

-follow
    Rozwikłuje dowiązania symboliczne. Wymusza -noleaf.

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

-maxdepth głębokość
    Schodzi maksymalnie głębokość (nieujemna liczba całkowita) poziomów katalogów od argumentów wiersza poleceń. `-maxdepth 0' oznacza, by testy i akcje stosować tylko do argumentów wiersza poleceń.

-mindepth lgłębokość
    Nie stosuje testów lub akcji w poziomach niższych niż głębokość (nieujemna liczba całkowita). `-mindepth 1' oznacza przetwarzanie wszystkich plików poza argumentami wiersza poleceń.

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

-noleaf
    Zakazuje optymalizacji wykonywanej przez zakładanie, że katalogi zawierają o dwa mniej podkatalogi niż ich licznik twardych dowiązań. 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 wolumenów AFS. Każdy katalog w normalnym systemie uniksowym zawiera przynajmniej dwa twarde dowiązania: jego nazwę i `.'. Dodatkowo, jego podkatalogi mogą mieć dowiązania `..'. Gdy find testuje katalog po zbadaniu funkcją stat o 2 mniej podkatalogów niż licznik dowiązań, wie, że reszta wpisów jest niekatalogowa. 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

Wartości numeryczne mogą być podawane jako

+n  dla większych niż n,

-n  dla mniejszych niż n,

n   dla równych n.

-amin n
    Dostęp do pliku nastąpił ostatnio n minut temu.

-anewer plik
    Do pliku ostatnio dostano się wcześniej niż plik został zmodyfikowany. -anewer podlega -follow tylko jeśli -follow pojawia się w linii komend przed -anewer.

-atime n
    Do pliku dostano się po raz ostatni n*24 godzin temu.

-cmin n
    Status pliku został zmieniony n minut temu.

-cnewer plik
    Status pliku był ostatnio zmieniony wcześniej niż zmodyfikowano plik. -cnewer podlega -follow tylko jeśli -follow pojawia się w linii komend przed -cnewer.

-ctime n
    Status pliku zmienił się ostatnio n*24 godzin temu.

-empty
    Plik jest pusty i jest albo plikiem regularnym, albo katalogiem.

-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 twoich systemów plików, użyj -printf z dyrektywą %F.

-gid n
    Numeryczny GID pliku to n.

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

-ilname pattern
    Podobne do -lname, lecz dopasowania są niewrażliwe na rozmiar liter.

-iname pattern
    Podobne do -name, lecz dopasowanie jest niewrażliwe na rozmiar liter. Na przykład wzorce `fo*' i `F??' dopasują się do nazw `Foo', `FOO', `foo', `fOo', itd.

-inum n
    Plik ma numer iwęzła n.

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

-iregex wzorzec
    Podobne do -regex, lecz dopasowanie jest niewrazliwe na rozmiar liter.

-links n
    Plik ma n dowiązań.

-lname wzorzec
    Plik jest dowiązaniem symbolicznym, którego zawartość odpowiada wzorcowi powłoki wzorzec. Metaznaki nie traktują specjalnie `/' i `.'.

-mmin n
    Dane pliku były ostatnio modyfikowane n minut temu.

-mtime n
    Dane pliku były ostatnio modyfikowane n*24 godzin temu.

-name wzorzec
    Podstawa nazwy pliku (z usuniętą ścieżką i poprzedzającymi katalogami) odpowiada wzorcowi powłoki wzorzec. Metaznaki (`*', `?', `[]') nie odpowiadają `.' na początku nazwy pliku. Aby zignorować katalogi i pliki im podległe, użyj -prune; zobacz przykład w opisie -path.

-newer plik
    Plik został zmodyfikowany wcześniej niż plik. -newer podlega -follow tylko jeśli -follow znajduje się w linii komend przed -newer.

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

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

-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 katalogowy o nazwie './src/misc' (jeśli taki istnieje). Aby zignorować całe drzewo katalogowe, użyj -prune. Na przykład, aby pominąć katalog `src/emacs' i wszystkie jego pliki oraz wypisać nazwy innych znalezionych plików, użyj:
    find . -path './src/emacs' -prune -o -print

-perm prawa
    Bity praw pliku są dokładnie równe prawom (ósemkowym lub symbolicznym). Prawa symboliczne używają 0 jako punktu wyjścia.

-perm -prawa
    wszystkie bity prawa są ustawione dla pliku.

-perm +prawa
    Któryś z bitów praw jest ustawiony dla pliku.

-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żesz użyć wyrażenia regularnego `.*bar' lub `.*b.*3'.

-size n[bckw]
    Plik zajmuje n jednostek miejsca. Jednostki to domyślnie 512-bajtowe bloki. Jeśli doklejona jest litera `c', jest to n bajtów, jeśli `k', kilobajtów, jeśli `w', dwubajtówych słów. Rozmiar nie wlicza niebezpośrednich bloków, lecz liczy bloki w plikach `sparse', które w rzeczywistości nie są zajęte.

-true
    Zawsze prawda.

-type c
    Plik jest typu c:

    b   blokowy (buforowany) plik specjalny

    c   znakowy (niebuforowany) plik specjalny

    d   katalog

    p   łącze nazwane (FIFO)

    f   zwykły plik

    l   dowiązanie symboliczne

    s   gniazdo

-uid n
    Numeryczny UID pliku to n.

-used n
    Do pliku ostatnio dostano się n dni po zmianie jego statusu.

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

-xtype c
    Jest to to samo co -type, chyba że plik jest dowiązaniem symbolicznym. Dla dowiązań symbolicznych: jeśli nie podano -follow, jest prawdziwe gdy plik jest dowiązaniem do pliku typu c; jeśli podano -follow, jest prawdziwe, jeśli c to `l'. Innymi słowy, dla dowiązań symbolicznych -xtype sprawdza typ pliku, którego nie sprawdza -type.

  AKCJE

-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. Obydwie te konstrukcje być może będą wymagały wycytowania (znakiem `\') aby uchronić je przed rozwinięciem przez powłokę. Polecenie jest wykonywane w katalogu startowym.

-fls plik
    Prawdziwe; podobne do -ls, lecz zapisuje do pliku jak -fprint.

-fprint plik
    Prawdziwe; wypisuje pełną nazwę pliku do pliku. Jeśli plik nie istnieje, 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.

-fprint0 plik
    Prawdziwe; podobne do -print0, lecz zapisuje do pliku, podobnie jak -fprint.

-fprintf plik format
    Prawdziwe; podobne do -printf, lecz zapisuje do pliku, podobnie jak -fprint.

-ok polecenie ;
    Podobne do -exec, lecz pyta wpierw użytkownika (na standardowym wejściu); jeśli odpowiedź nie rozpoczyna się od `y' lub `Y', nie uruchamia polecenia i zwraca fałsz.

-print
    Prawdziwe; wypisuje pełną nazwę pliku na standardowe wyjście. Za nazwą daje nową linię.

-print0
    Prawdziwe; wypisje pełną nazwę pliku na standardowe wyjście. Za nazwą daje znak null. Umożliwia to poprawne wyświetlenie plików, zawierających w nazwach znaki nowej linii w programach, przetwarzających wyjście finda.

-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 printf(3) z C. W przeciwieństwie do -print, -printf nie dodaje nowej linii do końca łańcucha. Sekwencje specjalne i dyrektywy to:

    \a  Dzwonek.

    \b  Backspace.

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

    \f  Form feed.

    \n  Nowa linia.

    \r  Powrót karetki.

    \t  Tabulacja pozioma.

    \v  Tabulacja pionowa.

    \\  Literalny lewy ukośnik (`\').

    `\', 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).

    %Ak Ostatni czas dostępu do pliku, w formacie okreslonym przez k, którym może być `@', lub dyrektywa dla funkcji C strftime(3). Możliwe wartości k są wymienione niżej; niektóre z nich mogą nie być dostępne na wszystkich systemach z powodu różnic w strftime(3) między systemami.

        @   Sekundy od 1 stycznia, 1970, 00:00 GMT.

        Pola czasowe:

        H   godzina (00..23)

        I   godzina (01..12)

        k   godzina ( 0..23)

        l   godzina ( 1..12)

        M   minuta (00..59)

        p   localowe AM lub PM

        r   czas, 12-godzinny (gg:mm:ss [AP]M)

        S   sekunda (00..61)

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

        X   lokalna reprezentacja czasu (G:M:S)

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

        Pola daty:

        a   lokalny skrót nazwy tygodnia (Sun..Sat)

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

        b   lokalna skrócona nazwa miesiąca (Jan..Dec)

        B   lokalna pełna nazwa miesiąca, zmiennej długości (January..December)

        c   lokalna data i czas (Sat Nov 04 12:02:33 EST 1989)

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

        D   data (mm/dd/rr)

        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/rr)

        y   ostatnie dwie cyfry roku (00..99)

        Y   rok (1970...)

    %b  Rozmiar pliku w 512-bajtowych blokach (zaokrąglanych w górę).

    %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 w argumencie wiersza poleceń.

    %f  Nazwa pliku z usuniętymi początkowymi katalogami (tylko ostatni element nazwy).

    %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  Początkowe katalogi nazwy pliku (wszystko poza ostatnim elementem).

    %H  Argument wiersza poleceń, pod którym plik został znaleziony.

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

    %k  Rozmiar pliku w 1K blokach (zaokrąglane w górę).

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

    %m  Prawa pliku (ósemkowo).

    %n  Liczba twardych dowiązań do pliku.

    %p  Nazwa pliku.

    %P  Nazwa pliku z usuniętą z początku nazwą argumentu wiersza poleceń, dla którego ją znaleziono.

    %s  Rozmiar pliku w bajtach.

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

    Znak `%', za którym następuje dowolny inny znak jest usuwany (lecz drugi znak jest drukowany).

-prune
    Jeśli nie podano -depth, prawdziwe; program nie wchodzi w głąb bieżącego katalogu.
    Jeśli podano -depth, fałszywe; bez rezultatu.

-ls Prawdziwe; listuje plik bieżący w formacie `ls ils' na standardowe wyjście. Liczniki bloków są 1K blokami, chyba że ustawiono zmienną środowiskową POSIXLY_CORRECT, kiedy używane będą 512-bajtowe bloki.

  OPERATORY

Wymienione w malejącym priorytecie:

( wyraż )
    Wymusza pierwszeństwo.

! wyraż
    Prawdziwe jeśli wyraż jest fałszywe

-not wyraż
    To samo co ! wyraż.

wyraż1 wyraż2
    And (jawny); wyraż2 nie jest analizowany jesli 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.

wyraż1 -o wyraż2
    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.

wyraż1 , wyraż2
    Lista; zarówno wyraż1 jak i wyraż2 zawsze są analizowane. Wartość wyraż1 jest niszczona; wartość listy jest wartością wyraż2.

ZOBACZ TAKŻE
locate(1L), locatedb(5L), updatedb(1L), xargs(1L) Znajdowanie plików (on-line w Info, lub w postaci wydrukowanej)