Príkaz Linux a Unix nájde vykonanie vyhľadávania súborov v hierarchii adresárov.
Syntax pre príkaz find :
nájsť [path ...] [expression]
popis
Táto stránka manuálu dokumentuje GNU verziu vyhľadávania . Príkaz nájde vyhľadávanie stromu adresárov zakorenené na každom danom názve súboru vyhodnotením daného výrazu zľava doprava podľa pravidiel prednosti (pozri časť Operátory nižšie), kým nie je známy výsledok; inými slovami, ľavá strana je falošná pre operácie, pravdivé pre, alebo v ktorom bode nájde presun na ďalší názov súboru.
Prvý argument začína:
- -
- ( alebo )
- ,
- !
je považovaný za začiatok výrazu; všetky argumenty pred ním sú cesty k hľadaniu a akékoľvek argumenty po ňom sú zvyšok výrazu. Ak nie sú uvedené žiadne cesty, použije sa aktuálny adresár. Ak nie je uvedený žiadny výraz, použije sa výraz -print .
Príkaz find nájde stav 0, ak sú všetky súbory úspešne spracované, väčšie ako 0, ak sa vyskytnú chyby.
výrazov
Výraz je tvorený voľbami (ktoré ovplyvňujú celkovú operáciu namiesto spracovania konkrétneho súboru a vždy vrátia true), testy (ktoré vrátia pravú alebo falošnú hodnotu) a akcie (ktoré majú vedľajšie účinky a vrátia pravdivú alebo falošná hodnota), všetky oddelené prevádzkovateľmi. Výraz - a predpokladá sa, že operátor je vynechaný. Ak výraz neobsahuje žiadne iné než -prune akcie , potom sa -print vykoná na všetkých súboroch, pre ktoré je tento výraz pravdivý.
možnosti
Všetky možnosti sa vždy vrátia. Vždy nadobúdajú účinnosť, skôr než sa spracúvajú iba vtedy, keď sa dosiahne ich miesto vo vyjadrení. Z dôvodu jasnosti je preto najlepšie umiestniť ich na začiatok výrazu.
-daystart | Merať časy (pre -amin, -atime, -cmin, -time, -mmin a -mtime ) od začiatku dneška skôr ako pred 24 hodinami. |
-depth | Spracujte obsah každého adresára pred samotným adresárom. |
-follow | Odporučiť symbolické odkazy. Znamená to - nepovolené . |
-help alebo --help | Vytlačte súhrnné informácie o použití príkazového riadku nájsť a ukončiť. |
-maxdepth [číslo] | Zostupujte na väčšinu počtu úrovní (negatívne celé číslo) adresárov pod argumentmi príkazového riadku. Výraz -maxdepth 0 znamená použiť iba testy a akcie na argumenty príkazového riadku. |
-mindepth [počet] | Nepoužívajte žiadne testy alebo akcie na úrovni nižšej ako je počet (ne záporné celé číslo). Výraz -mindepth 1 znamená spracovanie všetkých súborov okrem argumentov príkazového riadku. |
-Montážní | Adresáre neskartujte na iných súborových systémoch. Alternatívny názov -xdev , pre kompatibilitu s niektorými inými verziami vyhľadávania . |
-noleaf | Nepoužívajte optimalizáciu predpokladať, že adresáre obsahujú menej subdirektorov než ich počet pevných odkazov. * |
-version alebo -version | Vytlačte číslo verzie vyhľadávania a skončte. |
-xdev | Adresáre neskartujte na iných súborových systémoch. |
* Táto možnosť je potrebná pri vyhľadávaní súborových systémov, ktoré nedodržiavajú konvenciu Unix adresár-link, ako sú súborové systémy CD-ROM alebo MS-DOS alebo body pripojenia zväzku AFS. Každý adresár na bežnom Unixovom súborovom systéme má najmenej 2 tvrdé odkazy: jeho názov a jeho . (obdobie). Navyše, jeho podadresáre (ak existujú) majú navyše položku ... prepojenú s týmto adresárom.
Keď vyhľadávací adresár skúma adresár, potom, čo zadal dva menšie podadresáre než počet odkazov v adresári, vie, že ostatné položky v adresári nie sú adresári (súbory listov v adresári). Ak je potrebné preskúmať len názvy súborov, nie je potrebné ich oznamovať; to znamená výrazné zvýšenie rýchlosti vyhľadávania.
skúšky
Číselné argumenty je možné špecifikovať ako:
+ n | Pre viac ako n. |
-n | Pre menej ako n. |
n | Presne pre n. |
amin | Súbor bol naposledy sprístupnený pred minútami. |
-anwer [súbor] | Súbor bol naposledy sprístupnený neskôr, ako bol súbor upravený. -anwer je ovplyvnený -sledovať len vtedy, keď-nasleduje pred príchodom na príkazovom riadku. |
-atime n | Súbor bol naposledy prístupný n * pred 24 hodinami. |
-cmin n | Stav súboru bol naposledy zmenený pred minútami. |
-cnewer [súbor] | Stav súboru bol naposledy zmenený neskôr, ako bol súbor upravený. - cnewer je ovplyvnený -sledovať iba vtedy, keď -prebieha pred- cnewer na príkazovom riadku. |
-čas n | Stav súboru bol naposledy zmenený n * pred 24 hodinami. |
-empty | Súbor je prázdny a je buď bežný súbor alebo adresár. |
-false | Vždy nepravdivé. |
-fstype [typ] | Súbor je na súborovom systéme určeného typu. Platné typy súborových systémov sa líšia v rôznych verziách systému Unix. neúplný zoznam typov súborových systémov, ktoré sú akceptované v niektorých verziách Unixu alebo inej, je: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Pomocou príkazu -printf môžete pomocou smernice% F zobraziť typy súborových systémov. |
-gid n | ID číselnej skupiny súboru je n . |
-group [gname] | Súbor patrí do skupiny gname (povolená číselná skupina). |
-love [vzor] | Rovnako ako -iname, ale zápas nie je citlivý na veľké a malé písmená. |
-iname [vzor] | Rovnako ako -name , ale pri zápise nie sú citlivé na veľké a malé písmená. Napríklad vzory fo * a F? zodpovedajú názvom súborov Foo , FOO , foo , fOo atď. |
-inum n | Súbor má inode číslo n . |
-path [vzor] | Rovnako ako - cesta , ale zápas nie je citlivý na veľkosť písmen. |
-regex [vzor] | Rovnako ako -regex, ale zápas nie je citlivý na veľké a malé písmená. |
-links n | Súbor má n odkazov. |
-informovať [vzor] | Súbor je symbolický odkaz, ktorého obsah zodpovedá vzoru škrupiny. Metacharactery nešetria / alebo . zvlášť. |
-mmin n | Údaje súborov boli naposledy zmenené pred minútami. |
-mtime n | Údaje súboru boli naposledy zmenené n * pred 24 hodinami. |
-name [vzor] | Základ názvu súboru (cesta s vedúcimi adresármi odstránená) zodpovedá vzoru škrupiny. Metaznaky ( * , ? , A [] ) sa nezhodujú s a . na začiatku základného názvu. Ak chcete ignorovať adresár a súbory pod ním, použite -prune ; pozrite si príklad v popise cesty . |
-newer [súbor] | Súbor bol zmenený neskôr ako súbor . Výraz -newer je ovplyvnený -sledovať iba vtedy, keď -prebieha pred -newer na príkazovom riadku. |
-nouser | Žiadny používateľ nezodpovedá číselnému používateľskému ID súboru. |
-nogroup | Žiadna skupina nezodpovedá ID číselnej skupiny súboru. |
-spôsob [vzor] | Názov súboru sa zhoduje so vzorom vzorov škrupín. Metacharactery nešetria / alebo . špeciálne; Nájdete to napríklad. -path "./sr*sc vytlačí záznam pre adresár s názvom ./src/misc (ak existuje). Ak chcete ignorovať celý strom adresárov, použite -prune skôr ako skontrolovať každý súbor v strome. Napríklad, ak chcete preskočiť adresár src / emacs a všetky súbory a adresáre pod ním a vytlačiť názvy ďalších nájdených súborov, urobte niečo takéto: nájsť. -path "./src/emacs '-prune -o -print |
-perm [režim] | Súbory oprávnenia súboru sú presne [režim] (osmičkové alebo symbolické). Symbolické režimy používajú režim 0 ako miesto odchodu. |
-perm-mode | Pre súbor sú nastavené všetky bity povolenia [režim] . |
-perm + režim | Pre súbor je nastavený ktorýkoľvek z oprávnení bity [režim] . |
-regex [pattern] | Názov súboru zodpovedá vzoru regulárneho výrazu. Toto je zhoda na celej ceste, nie hľadanie. Napríklad, aby sa zhodoval súbor s názvom ./fubar3, môžete použiť regulárny výraz . * Bar. alebo . * b. * 3 , ale nie b. * r3 . |
-size n [bckw] | Súbor používa n jednotiek priestoru. Jednotky majú štandardne 512 bajtových blokov alebo ak b nasleduje n bajty, ak c nasleduje n , kilobytes, ak k nasleduje n , alebo 2 bajtové slová, ak w nasleduje n . Veľkosť nezahŕňa nepriame bloky, ale počet blokov v riedke súbory, ktoré nie sú skutočne priradené. |
-true | Vždy pravda. |
-typ c | Súbor je typu c : |
b | Zablokovanie (rezervované) špeciálne |
C | Znak (nebuffered) špeciálny |
d | adresár |
p | Pomenované potrubie (FIFO) |
F | Pravidelný súbor |
l | Symbolický odkaz |
s | zásuvka |
D | dvere (Solaris) |
-uid n | Číselné ID používateľa súboru je n . |
-used n | Súbor bol naposledy sprístupnený n dní po jeho poslednom zmene stavu. |
-user uname | Súbor je vo vlastníctve používateľa uname (povolené číselné používateľské ID). |
-xtype c | Rovnaký ako -typ, pokiaľ súbor nie je symbolický odkaz. Pre symbolické prepojenia: ak -sledne nebolo zadané, platí, ak je súbor odkazom na súbor typu c ; ak je zadané nasledovné, true, ak c je l. Inými slovami, pre symbolické väzby, -xtype skontroluje typ súboru, ktorý typ nekontroluje. |
Akcia
príkaz -exec;
Spustiť príkaz ; true, ak je vrátený stav 0. Nasledujúce argumenty, ktoré sa majú nájsť, sa považujú za argumenty pre príkaz, kým argument, ktorý sa skladá z ";" sa vyskytuje. Reťazec `{} 'sa nahradí aktuálnym názvom súboru, ktorý sa spracováva všade, kde sa vyskytuje v argumentoch príkazu, a to nielen v argumentoch, kde je sám, ako v niektorých verziách nájdu . Obidva tieto konštrukcie môžu byť potrebné uniknúť (pomocou `\ ') alebo citované, aby ich chránili pred expanziou pomocou shell. Príkaz sa vykoná v počiatočnom adresári.
-fls súboru
pravda; ako -l, ale napíše do súboru ako -fprint.
-fprint súbor
pravda; vytlačiť celý súbor do súboru . Ak súbor pri spustení nájde neexistuje, vytvorí sa; ak existuje, je skrátená. Názvy súborov `` / dev / stdout '' a `` dev / stderr '' sa spracúvajú špeciálne; vzťahujú sa na štandardný výstup a výstup štandardnej chyby.
-fprint0 súboru
pravda; ako -print0, ale napíše do súboru ako -fprint.
-fprintf formát súboru
pravda; ako -printf, ale napíše do súboru ako -fprint.
príkaz -ok;
Rovnako ako -exec, ale spýtajte sa najprv používateľa (na štandardnom vstupe); ak odpoveď nezačína s "y" alebo "Y", nespúšťajte príkaz a nevráťte nepravdivé.
pravda; vytlačte celý názov súboru na štandardnom výstupe, za ktorým nasleduje nový riadok.
-print0
pravda; vytlačte celý názov súboru na štandardnom výstupe a nasleduje nulový znak. To umožňuje, aby názvy súborov, ktoré obsahujú nové riadky, boli správne interpretované programami, ktoré spracúvajú výstup vyhľadávania.
-printf formát
pravda; formát tlače na štandardnom výstupe, interpretácia smerníc `\ 'escapes a`%'. Šírky a presné polia je možné špecifikovať ako pri funkcii `printf 'C. Na rozdiel od -print, -printf nepridá nový riadok na konci reťazca. Úniky a smernice sú:
\ a
Budík zvonček.
\ b
Backspace.
\ c
Zastavte okamžite tlač z tohto formátu a vyplachujte výstup.
\ f
Form feed.
\ n
Nový riadok.
\ r
Prepravný doklad.
\ t
Horizontálna karta.
\ v
Vertikálna karta.
\\
Doslovné lomítko (`\ ').
\ NNN
Znak, ktorého ASCII kód je NNN (osmičkový).
Znak "` ", za ktorým nasleduje akýkoľvek iný znak, sa považuje za obyčajný znak, takže sú oboje vytlačené.
%%
Doslovné percento znamenie.
% A
Posledný čas prístupu súboru vo formáte vrátenom funkciou C `ctime '.
% A k
Posledný čas prístupu súboru vo formáte určenom k , ktorý je buď `@ ', alebo direktívu pre funkciu C` strftime'. Možné hodnoty pre k sú uvedené nižšie; niektoré z nich nemusia byť dostupné vo všetkých systémoch kvôli rozdielom v systéme "strftime" medzi systémami.
@
sekúnd od 1. januára 1970, 00:00 GMT.
Časové polia:
H
hodina (00..23)
ja
hodina (01..12)
k
hodina (0..23)
l
hodina (1..12)
M
minúta (00..59)
p
AM alebo PM miestneho prostredia
r
čas, 12 hodín (hh: mm: ss [AP] M)
S
druhý (00..61)
T
čas, 24 hodín (hh: mm: ss)
X
časové zastúpenie lokality (H: M: S)
Z
časové pásmo (napr. EDT), alebo nič, ak nie je možné určiť časové pásmo
Polia dátumu:
miestny skrátený názov dňa v týždni (Sun..Sat)
miestne názov celého dňa, variabilná dĺžka (nedeľa, sobota)
b
miestny skrátený názov mesiaca (Jan..Dec)
B
miestny názov plného mena, premenná dĺžka (január, december)
C
dátum a čas lokality (So Nov 04 12:02:33 EST 1989)
d
deň v mesiaci (01..31)
D
dátum (mm / dd / rr)
hod
rovnaké ako b
j
deň v roku (001..366)
m
mesiac (01..12)
U
týždeň číslo roku s nedeľou ako prvý deň v týždni (00..53)
w
deň v týždni (0..6)
W
týždeň číslo roka s pondelkom ako prvý deň v týždni (00..53)
X
reprezentácia dátumu lokality (mm / dd / rr)
y
posledné dve číslice roku (00..99)
Y
rok (1970 ...)
% b
Veľkosť súboru v blokoch s veľkosťou 512 bajtov (zaokrúhlené nahor).
% c
Posledný čas zmeny stavu súboru vo formáte vrátenom funkciou C `ctime '.
% C k
Posledný čas zmeny stavu súboru vo formáte určenom k , ktorý je rovnaký ako pri% A.
% d
Hĺbka súboru v adresári; 0 znamená, že súbor je argument príkazového riadku.
% f
Názov súboru s odstránenými vedúcimi adresármi (iba posledný prvok).
% F
Typ súborového systému, na ktorom je súbor zapnutý; táto hodnota sa môže použiť pre -ftype.
% g
Názov skupiny súborov alebo identifikátor číselnej skupiny, ak nemá skupina žiadny názov.
% G
ID číselnej skupiny súboru.
% h
Vedúce adresáre názvu súboru (všetky okrem posledného prvku).
% H
Argument príkazového riadku, pod ktorým bol nájdený súbor.
% i
Číslo súboru inode (v desatinnom čísle).
% k
Veľkosť súboru v blokoch 1K (zaokrúhlené nahor).
% l
Objekt symbolického odkazu (prázdny reťazec, ak súbor nie je symbolický odkaz).
% m
Súbory povolenia bitov (v osmičke).
% n
Počet pevných odkazov na súbor.
% p
Názov súboru.
% P
Názov súboru s názvom argumentu príkazového riadku, pod ktorým bol odstránený.
% s
Veľkosť súboru v bajtoch.
% t
Posledný čas úpravy súboru vo formáte vrátenom funkciou C `ctime '.
% T k
Posledný čas úpravy súboru vo formáte určenom k , ktorý je rovnaký ako pre% A.
% u
Používateľské meno súboru alebo číselné používateľské ID, ak používateľ nemá žiadne meno.
% U
Číslo číselného súboru súboru.
Znak "%", za ktorým nasleduje iný znak, sa vylúči (ale vytlačí sa druhý znak).
-prune
Ak -depth nie je daná, pravda; neklesajúci aktuálny adresár.
Ak je zadaná - falošná; bez efektu.
-Je
pravda; zoznam aktuálneho súboru vo formáte `ls -dils 'na štandardnom výstupe. Počet blokov je 1K blokov, pokiaľ nie je nastavená premenná prostredia POSIXLY_CORRECT, v takom prípade sa použijú bloky s veľkosťou 512 bajtov.
operátori
Zoradené v poradí klesajúcich priorít:
( expr )
Prednosť sily.
! expr
Pravda, ak je expr falošné.
-expres
Rovnaké ako ! expr .
expr1 expr2
A (implicitne); expr2 sa nehodnotí, ak expr1 je falošný.
expr1-a expr2
Rovnaké ako expr1 expr2 .
expr1 - a expr2
Rovnaké ako expr1 expr2 .
expr1 -o expr2
alebo; expr2 sa nehodnotí, ak je expr1 pravdivá.
expr1 - alebo expr2
Rovnaké ako expr1 -o expr2 .
expr1 , expr2
Zoznam povolených; ako expr1, tak expr2 sa vždy hodnotí. Hodnota expr1 sa vyradí; hodnota zoznamu je hodnota expr2 .
Príklady
nájsť / home-user joeNájdite každý súbor v adresári / doméne, ktorý vlastní používateľ joe.
nájsť / usr -name * statNájdite každý súbor pod adresárom / usr končiac v ".stat".
nájsť / var / spool -mtime +60Nájdite každý súbor pod adresárom / var / spool, ktorý bol upravený pred viac ako 60 dňami.
nájsť / tmp -name core -type f -print | xargs / bin / rm -fVyhľadajte súbory s názvom jadro v alebo pod adresárom / tmp a odstráňte ich. Všimnite si, že to bude fungovať nesprávne, ak existujú názvy súborov obsahujúce nové riadky, jednoduché alebo dvojité úvodzovky alebo medzery.
nájsť / tmp -name core -type f -print0 | xargs -0 / bin / rm -fNájdite súbory s názvom jadro v alebo pod adresárom / tmp a odstráňte ich, spracovanie názvov súborov takým spôsobom, aby názvy súborov alebo adresárov obsahujúce jednoduché alebo dvojité úvodzovky, medzery alebo nové riadky boli správne spracované. Test typu -name prichádza pred testom typu, aby sa zabránilo tomu, že budete musieť vo všetkých súboroch volať stat (2) .
Nájsť . súbor typu f-exec '{}' \;Spustí súbor v každom súbore v aktuálnom adresári alebo pod ním. Všimnite si, že závorky sú uzavreté v jednoduchých úvodzovkách, aby ich chránili pred interpretáciou ako interpunkcia skriptu pre shell. Bodkočiarka je podobne chránená použitím spätného lomka, hoci ';' v tomto prípade mohli byť použité.
nájsť / \ (-perm -4000 -fprintf /root/suid.txt '% # m% u% p \ n' \), \ \ (-size + 100M -fprintf /root/big.txt '% -10s% p \ n '\)Prejdite súborový systém len raz, zoznam súborov a adresárov súborov setuid do /root/suid.txt a veľkých súborov do /root/big.txt .
nájsť $ HOME -time 0Vyhľadajte súbory vo vašom domovskom adresári, ktoré boli upravené za posledných dvadsaťštyri hodín. Tento príkaz pracuje týmto spôsobom, pretože čas posledného modifikácie každého súboru je rozdelený na 24 hodín a zvyšok sa vyradí. To znamená, že sa zhoduje s -mtime
0 , súbor bude musieť mať v minulosti úpravu, ktorá je pred menej ako 24 hodinami.
Nájsť . -perm 664Vyhľadajte súbory, ktoré majú oprávnenie na čítanie a písanie pre vlastníka a skupinu, ale ostatní používatelia môžu čítať, ale nepíšu. Súbory, ktoré spĺňajú tieto kritériá, ale majú iné nastavené bity oprávnení (napríklad ak niekto môže spustiť súbor) sa nebudú zhodovať.
Nájsť . -perm -664Vyhľadajte súbory, ktoré majú oprávnenie na čítanie a zápis vlastníka a skupiny a ktoré ostatní používatelia dokážu čítať, bez ohľadu na prítomnosť akýchkoľvek bitov navyše povolených (napríklad spustiteľný bit). To sa zhoduje so súborom, ktorý má napríklad režim 0777.
Nájsť . -perm / 222Vyhľadajte súbory, ktoré je možné zapisovať niekto (ich vlastník, ich skupina alebo niekto iný).
Nájsť . -perm / 220 nájsť. -perm / u + w, g + w nájsť. -perm / u = w, g = wVšetky tri príkazy robia to isté, ale prvá používa osmičkové znázornenie režimu súborov a ostatné dva používajú symbolický tvar. Tieto príkazy vyhľadávajú všetky súbory, ktoré sú zapisovateľné buď vlastníkom alebo ich skupinou. Súbory nemusia byť zapisovateľné ako vlastníkom, tak aj skupinou, ktorá sa má zhodovať. buď to urobí.
Nájsť . -perm -220 nájsť. -perm -g + w, u + wObidva tieto príkazy robia to isté; hľadať súbory, ktoré sú zapisovateľné ako vlastníkom, tak ich skupinou.
Nájsť . -perm -444 -perm / 222! -perm / 111 nájsť. -perm -a + r -perm / a + w! -perm / a + xTieto dva príkazy vyhľadávajú súbory, ktoré sú čitateľné pre každého (-perm -444 alebo -perm -a + r), majú aspoň nastavený bit pre zápis (-perm / 222 alebo -perm / a + w), ale nie sú spustiteľné pre každého (! -perm / 111 a / -perm / a + x)
Dôležité: Pomocou príkazu man ( % man ) môžete zistiť, ako sa príkaz používa vo vašom konkrétnom počítači.