Skip to main content

Použitie príkazov Linux a Unix nájdite

Anonim

Príkazy Linux a Unix Nájsť spustí vyhľadávanie súborov v hierarchii adresárov.

Syntax pre Nájsť príkaz:

nájsť path … expression

popis

Táto manuálová stránka dokumentuje verziu GNU Nájsť , Príkaz Nájsť vyhľadáva strom adresárov zakorenený pri každom danom názve súboru vyhodnotením daného výrazu zľava doprava podľa pravidiel prednosti (pozri časť Operátori nižšie), kým nie je známy výsledok; inými slovami, ľavá strana je falošná a operácie, pravda pre alebo , kedykoľvek Nájsť presunie na nasledujúci 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, výraz -print sa používa.

Nájsť príkazy ukončí so stavom 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 sa predpokladá, keď je obsluha vynechaná. Ak výraz neobsahuje žiadne iné než akcie -prune , potom -print sa vykonáva 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 Čas merania (pre -amin, -atime, -cmin, -time, -mmin, a -mtime ) od začiatku dnešného dňa skôr ako pred 24 hodinami.
-depth Spracujte obsah každého adresára pred samotným adresárom.
-follow Odporučiť symbolické odkazy. implikuje -noleaf .
-Pomoc alebo --Pomoc Vytlačiť súhrnné využitie príkazového riadku Nájsť a výstupu.
-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 -mindepta 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 pre -xdev , pre kompatibilitu s niektorými inými verziami Nájsť .
-noleaf Nepoužívajte optimalizáciu predpokladať, že adresáre obsahujú menej subdirektorov než ich počet pevných odkazov. *
-version alebo --version Vytlačte Nájsť číslo verzie a výstup.
-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). Okrem toho majú svoje podadresáre (ak existujú). záznam pripojený k tomuto adresáru.

Kedy Nájsť skúma adresár po tom, čo zadal dva menej podadresárov ako počet odkazov v adresári, ale vie, že ostatné položky v adresári nie sú adresári ( krídlo súbory 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 Za menej ako n.
n Presne n.
amin Súbor bol naposledy sprístupnený n pred pár minútami.
-anwer súbor Súbor bol naposledy prístupný neskôr ako súbor bola zmenená. -anwer je ovplyvnený -sledovať len vtedy, keď-nasleduje pred príchodom na príkazovom riadku.
-atime n Súbor bol naposledy sprístupnený n * Pred 24 hodinami.
-cmin n Stav súboru bol naposledy zmenený n pred pár minútami.
-cnewer súbor Stav súboru bol naposledy zmenený neskôr, ako bol súbor upravený.- cnewer je ovplyvnená -follow iba ak -follow prichádza predtým -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 Páči sa mi to -názov , ale v zápase nie sú citlivé na veľké a malé písmená. Napríklad vzory fo * a F ?? názvy súborov foo , FOO , foo , foo , atď.
-inum n Súbor má inode číslo n .
-path vzor Páči sa mi to -path , ale v zápase nie sú citlivé na veľké a malé 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 odkazy.
-informovať vzor Súbor je symbolický odkaz, ktorého obsah zodpovedá vzoru škrupiny. Metacharactery sa neliečia / alebo . zvlášť.
-mmin n Údaje súboru boli naposledy upravené n pred pár minútami.
-mtime n Údaje súboru boli naposledy upravené n * Pred 24 hodinami.
-name vzor Základ názvu súboru (cesta s vedúcimi adresármi odstránená) zodpovedá vzoru škrupiny. Metacharaktery (*, ?, a ) nezodpovedajú a . na začiatku základného názvu. Ak chcete ignorovať adresár a súbory pod ním, použite -prune ; pozri príklad v popise -path .
-newer súbor Súbor bol zmenený neskôr ako súbor , Výraz -newer je ovplyvnená -follow iba ak -follow prichádza predtým -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 zodpovedá vzoru škrupiny vzor , Metacharactery sa neliečia / alebo . špeciálne; tak, napríklad,Nájsť . -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 než 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ť mená ostatný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 Všetky bity povolenia Režim sú nastavené pre súbor.
-perm + režim Ktorékoľvek povolené bity Režim sú nastavené pre súbor.
-regex pattern Názov súboru zodpovedá regulárnemu výrazu vzor , Toto je zhoda na celej ceste, nie hľadanie. Ak chcete napríklad priradiť 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 nasleduje c n , kilobajty, ak nasleduje k n , alebo 2-byte 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 jej poslednom zmene statusu.
-user uname Súbor je vo vlastníctve používateľa UNAM (povolené číselné používateľské meno).
-xtype c Rovnake ako -type pokiaľ súbor nie je symbolickým odkazom. Pre symbolické odkazy: ak -follow nebol daný, platí, ak je súbor odkazom na typ súboru C ; ak -follow bol daný, pravda, ak C je l. Inými slovami, pre symbolické väzby, -xtype skontroluje typ súboru -type nekontroluje.

Akcia

-exec príkaz ;

popraviť príkaz ; true, ak je vrátený stav 0. Všetky nasledujúce argumentyNájsť sú považované za argumenty pre velenie, 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áchNájsť, 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úbor

pravda; ako -l, ale napísať súbor ako -fprint.

-fprint súbor

pravda; vytlačte celý súbor do súboru súbor , ak súbor neexistuje, keďNájsť je spustený, je vytvorený; 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úbor

pravda; ako -print0, ale písať súbor ako -fprint.

-fprintf súbor formát

pravda; ako -printf, ale napíšte do súbor ako -fprint.

-OK príkaz ;

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

-print

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é spracovávajúNájsť výkon.

-printf formát

pravda; vytlačiť formát na štandardnom výstupe, tlmočenie 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 používateľom k , ktorý je buď `@ ', alebo smernica 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 používateľom k , čo je rovnaké ako pre% 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 používateľom k , čo 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, či expr je nepravdivé.

-not expr

Rovnaké ako ! expr .

expr1 expr2

A (implicitne); expr2 sa nehodnotí, či expr1 je nepravdivé.

expr1 -a expr2

Rovnaké ako expr1 expr2 .

expr1 -a expr2

Rovnaké ako expr1 expr2 .

expr1 -o expr2

alebo; expr2 sa nehodnotí, či expr1 je pravda.

expr1 -alebo expr2

Rovnaké ako expr1 -o expr2 .

expr1 , expr2

Zoznam povolených; oba expr1 a expr2 sú vždy hodnotené. Hodnota expr1 je zlikvidovaná; hodnota zoznamu je hodnota expr2 .

Príklady

nájsť / home-user joe

Nájdite každý súbor v adresári / doméne, ktorý vlastní používateľ joe.

nájsť / usr -name * stat

Nájdite každý súbor pod adresárom / usr končiac v ".stat".

nájsť / var / spool -mtime +60

Ná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 -f

Vyhľadajte súbory s názvomjadro 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 -f

Vyhľadajte súbory s názvomjadro v alebo pod adresárom/ tmp a ich odstránenie, spracovanie názvov súborov takým spôsobom, že názvy súborov alebo adresárov obsahujúce jednoduché alebo dvojité úvodzovky, medzery alebo nové riadky sú správne spracované.-názov test predchádza-type test, aby ste sa vyhli nutnosti volaniastat (2) na každom súbore.

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, pričom zoznam súborov a adresárov nastavíte/root/suid.txt a do veľkých súborov/root/big.txt.

nájsť $ HOME -time 0

Vyhľ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 na zápas-mtime

0, súbor bude musieť mať v minulosti úpravu, ktorá je pred menej ako 24 hodinami.

Nájsť . -perm 664

Vyhľ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 -664

Vyhľ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 / 222

Vyhľ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 = w

Vš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 + w

Obidva 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 + x

Tieto 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é: Použi muž príkaz ( % muž ), aby ste zistili, ako sa príkaz používa vo vašom konkrétnom počítači.