Find
Z wiki linux-user
(Utworzył nową stronę „Category:Polecenia systemu Linux == Polecenie find == '''find''' przeszukuje drzewo katalogowe, zakorzenione w każdej z podanych nazw plików. Wykonuje przy ty...”) |
|||
Linia 87: | Linia 87: | ||
Wartości numeryczne mogą być podawane jako | 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: |
− | * | + | *'''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. | ||
+ | |||
+ | === Wymienione w malejącym priorytecie === | ||
+ | |||
+ | *( wyraz ) wymusza pierwszeństwo. | ||
+ | *! wyraż prawdziwe jeśli wyraż jest fałszywe | ||
+ | *-not wyrazż 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. |