Skip to main content

Izmantojot Linux un Unix komandu atrast

Anonim

Komandu Linux un Unix atrast izpilda failu meklēšanu direktoriju hierarhijā.

Sintakse par atrast komanda:

atrast ceļš … izteiksme

Apraksts

Šī rokasgrāmata dokumentē GNU versiju atrast . Komanda atrast meklē kataloga koku, kas sakņojas katrā konkrētā faila nosaukumā, izvērtējot attiecīgo izteiksmi no kreisās uz labo, saskaņā ar prioritātes noteikumiem (skat. sadaļu par Operatoriem zemāk), līdz rezultāts ir zināms; citiem vārdiem sakot, kreisā puse ir nepatiesa un operācijas, ir taisnība vai , šajā brīdī atrast pāriet pie nākamā faila nosaukuma.

Pirmais arguments, kas sākas ar:

  • -
  • ( vai),
  • !

tiek uzskatīts par izteiksmes sākumu; pirms jebkādiem argumentiem ir meklēšanas ceļš, un visi argumenti pēc tam, kad ir pārējā izteiksme. Ja nav norādīti ceļi, tiek izmantots pašreizējais direktorijs. Ja nav izteiksmes, vārdu -prints tiek izmantots.

The atrast komanda iziet ar statusu 0, ja visi faili tiek veiksmīgi apstrādāti, ja kļūdu gadījumā tas ir lielāks par 0.

Izteiksmes

Izteiksme sastāv no opcijām (kas ietekmē kopējo darbību, nevis konkrēta faila apstrādi, un vienmēr atgriež taisnību), testi (kas atgriež patiesu vai nepatiesu vērtību) un darbības (kurām ir blakusparādības un kas atgriež patiesu vai nepatiesa vērtība), ko visi atdala operatori. Izteiciens -un Tiek pieņemts, ja operators ir izlaists. Ja izteiksmē nav citu darbību kā -krūna , tad -prints tiek veikta visos failos, kuriem izteiksme ir patiesa.

Iespējas

Visas opcijas vienmēr atgriež patiess. Viņi vienmēr stājas spēkā, nevis tiek apstrādāti tikai tad, kad ir sasniegta viņu vieta izteiksmē. Tāpēc skaidrības labad vislabāk ir tos ievietot izteiksmes sākumā.

sākuma diena Pasākuma laiks (par -amin, -atime, -cmin, -ctime, -mmin, un -m laiks ) no paša sākuma, nevis no pirms 24 stundām.
-depth Katra direktorija satura apstrāde pirms paša direktora.
-nākamais Dereference simboliskās saites. Ietekmē -noleafs .
-palīdzība vai --palīdzība Drukāt kopsavilkumu par komandrindas izmantošanu atrast un izeja.
-maxdepth skaits Nolaižot lielāko skaitu līmeņu (ne-negatīvs vesels skaitlis) no direktorijām zem komandrindas argumentiem. Izteiciens -maxdepth 0 nozīmē izmantot tikai testus un darbības komandrindas argumentos.
-mindeft skaits Neizmantojiet nekādus testus vai darbības līmenī, kas ir mazāks par skaitli (ne-negatīvs vesels skaitlis). Izteiciens -mindepth 1 ir process visus failus, izņemot komandrindas argumentus.
-summa Nenometiet katalogus citās failu sistēmās. Alternatīvs nosaukums -xdev par saderību ar dažām citām atrast .
-noleafs Nelietojiet optimizēt, pieņemot, ka katalogi satur 2 mazāk apakšdirektorijas nekā viņu cieto saišu skaits. *
-pārdošana vai - pārveide Drukāt atrast versijas numurs un izeja.
-xdev Nenometiet katalogus citās failu sistēmās.

* Šī opcija ir nepieciešama, meklējot failu sistēmas, kas neizmanto Unix direktorijas saišu konvenciju, piemēram, CD-ROM vai MS-DOS failu sistēmas vai AFS skaļuma piestiprināšanas punkti. Katrai parastās Unix failu sistēmas direktorijai ir vismaz 2 cietās saites: tās nosaukums un tā. (perioda) ieraksts. Turklāt katrai no tām ir apakšdirektorijas (ja tādas ir). ieraksts, kas saistīts ar šo direktoriju.

Kad atrast izskata direktoriju, pēc tam, kad tā ir izveidojusi divas mazāk apakšdirektorijas nekā direktorijas saišu skaits, tā zina, ka pārējie ieraksti katalogā ir ne-direktoriji ( lapa faili direktoriju kokā). Ja ir jāpārbauda tikai failu nosaukumi, to nav nepieciešams noteikt; tas ievērojami palielina meklēšanas ātrumu.

Testi

Ciparu argumentus var norādīt šādi:

+ n Lielāks par n
-n Mazāk par n
n Precīzi n
-amīns n Pēdējoreiz bija piekļuve failam n pirms minūtēm.
-newer fails Visbeidzot pēdējo reizi tika lietots fails, nevis fails tika mainīts. -newer ietekmē -follow tikai tad, ja -follow nāk pirms-iepriekšējā uz komandrindas.
-atmiņas n Pēdējoreiz bija piekļuve failam n * Pirms 24 stundām.
-cmin n Faila statuss pēdējoreiz mainīts n pirms minūtēm.
-cnewer fails Faila statuss pēdējoreiz tika mainīts nesen, kad tika mainīts fails.- cnewer ietekmē -nākamais tikai ja -nākamais nāk agrāk -cnewer uz komandrindas.
-ctime n Faila statuss pēdējoreiz mainīts n * Pirms 24 stundām.
-nešķīgs Fails ir tukšs un ir vai nu parasts fails vai direktorija.
-false Vienmēr viltus.
-fstype tips Fails ir norādītā tipa failu sistēmā. Spēkā esošie failu sistēmas tipi atšķiras dažādās Unix versijās; nepilnīgs saraksts ar failu sistēmu tipiem, kas ir pieņemti kādā no Unix versijām vai citu, ir: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Varat izmantot -printf ar% F direktīvu, lai redzētu savu failu sistēmu tipus.
-gid n Faila ciparu grupas ID ir n .
-grupa gname Fails pieder pie grupas gname (atļauts izmantot ciparu grupas ID).
-persona modelis Tāpat kā -name, bet spēle neatbilst privātumu.
-iname modelis Kā -vārds , taču spēle ir bezvērts. Piemēram, modeļi fo * un F ?? atbilst failu nosaukumiem Foo , FOO , foo , fOo , utt.
-inum n Fails ir inode numurs n .
-pītis modelis Kā ceļš , taču spēle ir bezvērts.
-reģistrēti modelis Tāpat kā -regex, bet spēles neatbilstībām.
-links n Fails ir n saites
-vārds raksts Fails ir simboliska saite, kuras saturs atbilst čaulas modelim. Meta zīmēm neder / vai . speciāli.
-mmin n Faila dati tika pēdējoreiz mainīti n pirms minūtēm.
-mtime n Faila dati tika pēdējoreiz mainīti n * Pirms 24 stundām.
-vārds raksts Faila nosaukuma bāze (ceļš ar izņemtajiem vadošajiem direktorijiem) atbilst čaulas modelim. Meta zīmēm (*, ?, un ) neatbilst a . bāzes nosaukuma sākumā. Lai ignorētu direktoriju un zem tā esošos failus, izmantojiet -krūna ; skatīt piemēru aprakstā ceļš .
-newer fails Fails tika modificēts pavisam nesen kā fails . Izteiciens -newer ietekmē -nākamais tikai ja -nākamais nāk agrāk -newer uz komandrindas.
-nouser Neviens lietotājs neatbilst faila ciparu lietotāja ID.
-grupa Neviena grupa neatbilst faila ciparu grupas ID.
-ceļš modelis Faila nosaukums atbilst čaumalas paraugam modelis . Meta zīmēm neder / vai . speciāli; tā, piemēram,atrast "ceļš" ./sr * sk izdrukās ierakstu par direktoriju ar nosaukumu ./src/misc (ja tāds ir). Lai ignorētu visu direktoriju koku, izmantojiet -krūna nevis pārbaudīt katru koka failu. Piemēram, lai izlaistu direktoriju src / emacs un visus zem tā esošos failus un direktorijus, kā arī drukātu citu atrasto failu nosaukumus, rīkojieties šādi:atrast -ceļš './src/emacs' -prune-o -print
-perm režīms Faila atļaujas biti ir precīzi režīms (astotais vai simboliskais). Simboliskie režīmi izmanto izejas punktu 0 režīmu.
-perm-mods Visi atļauja biti režīms ir iestatīti failam.
-perm + režīms Jebkurš no atļaujas bitiem režīms ir iestatīti failam.
-regex modelis Faila nosaukums atbilst regulārai izteiksmei modelis . Tas ir spēles visā ceļš, nevis meklēšana. Piemēram, lai saskaņotu failu ar nosaukumu ./fubar3, varat izmantot regulāro izteiksmi .*bārs. vai . * b. * 3, bet ne b. * r3.
-size n bckw Faila izmantošana n telpas vienības. Ierīces pēc noklusējuma ir 512 baitu bloki, vai arī b ir šādi n , biti, ja c nāk n , kilobaitos, ja k ir sekojošs n vai 2 baitu vārdi, ja w šādi n . Izmērs neuzrāda netiešus blokus, bet tas slēdz ar blokiem reti sastopamajos failos, kas faktiski netiek piešķirti.
-tīda Vienmēr taisnība.
veida c Fails ir tipa c :
b Bloķēt (buferēts) īpašs
c Rakstzīme (bez biferēta) īpaša
d Katalogs
p Nosaukta caurule (FIFO)
f Regulārais fails
l Simboliskā saite
s Kontaktligzda
D durvis (Solaris)
-uid n Faila ciparu lietotāja ID ir n .
izmantots n Pēdējoreiz bija piekļuve failam n dienas pēc tā statusa pēdējās izmaiņas.
-user uname Fails pieder lietotājam uname (atļauts izmantot skaitlisko lietotāja ID).
-piemēra c Tāpat kā tipa ja vien fails nav simboliska saite. Par simboliskajām saitēm: ja -nākamais nav dota, patiesa, ja fails ir saite uz faila tipu c ; ja -nākamais ir dota, patiesa, ja c ir l Citiem vārdiem sakot, simboliskajām saitēm -steps pārbauda faila veidu, kuru tipa nekontrolē.

Darbības

-exec komandu ;

Izpildīt komandu ; true, ja tiek atgriezts 0 statuss. Visi šie argumenti uzatrast tiek uzskatīti par argumentiem komandai, līdz arguments, kas sastāv no `; ' ir sastopams. Virkne `{} 'tiek aizstāta ar pašreizējo faila nosaukumu, ko apstrādā visur, kur tas rodas komandas argumentos, nevis tikai argumentos, kur tas ir viens, kā dažās versijāsatrast. Abas šīs konstrukcijas, iespējams, ir jāizvairās (ar ` ') vai citēt, lai aizsargātu tās no čaulas izplešanās. Komandu izpilda sākum direktorijā.

-fls fails

Taisnība; piemēram, -l, bet rakstīt fails kā -fprint.

-fprint fails

Taisnība; izdrukājiet pilnu faila nosaukumu failā fails . Ja fails nepastāv, kadatrast ir palaists, tas ir izveidots; ja tas pastāv, to saīsina. Failu nosaukumi `` / dev / stdout '' un `` / dev / stderr '' tiek apstrādāti speciāli; tie attiecas attiecīgi uz standarta izvadi un standarta kļūdu izvadi.

-fprint0 fails

Taisnība; piemēram, -print0, bet rakstīt uz fails kā -fprint.

-fprintf fails formātā

Taisnība; kā -printf, bet rakstīt uz fails kā -fprint.

-labi komandu ;

Tāpat kā -exec, bet vispirms jautājiet lietotājam (standarta ievadei); ja atbilde nesākas ar `y 'vai' Y ', palaidiet komandu un atgriezieties false.

-prints

Taisnība; izdrukājiet pilnu faila nosaukumu uz standarta izvadi, kam seko jauna līnija.

-print0

Taisnība; izdrukājiet pilnu faila nosaukumu uz standarta izvadi, kam seko null rakstzīme.Tas ļauj failu nosaukumus, kas satur jaunās līnijas, pareizi interpretēt programmās, kuras apstrādāatrast produkcija.

-printf formātā

Taisnība; izdrukāt formātā par standarta izlaidi, tulkošana ` 'aizbēg un`%' direktīvām. Lauka platumu un precizitāti var norādīt kā ar `printf 'C funkciju. Atšķirībā no drukāšanas, -printf virknes beigās neievieto jaunu rindiņu. Aizbēgt un vadīt:

a

Signalizācijas zvans.

b

Backspace.

c

Nekavējoties pārtrauciet drukāšanu no šī formāta un izskalojiet.

f

Veidlapas barība.

n

Newline.

r

Rakstatgriezes.

t

Horizontālā cilne.

v

Vertikālā cilne.

\

Burtiski slīpsvītra (` ').

NNN

Raksturs, kura ASCII kods ir NNN (oktāls).

` 'Raksturs, kam seko jebkurš cits raksturs, tiek uzskatīts par parastu rakstzīmi, tāpēc abas tiek drukātas.

%%

Burtiska lieluma zīme.

% a

Faila pēdējais piekļuves laiks formātā, ko atgriež C `ctime 'funkcija.

% A k

Faila pēdējais piekļuves laiks formātā, kuru norādījis k , kas ir vai nu `@ ', vai direktīva C` strftime' funkcijai. Iespējamās vērtības k ir uzskaitīti zemāk; daži no tiem var nebūt pieejami visās sistēmās, jo sistēmas "strftime" atšķiras.

@

sekundes kopš 1970. gada 1. janvāra, 00:00 GMT.

Laika lauki:

H

stunda (00..23)

Es

stunda (01..12)

k

stunda (0..23)

l

stunda (1..12)

M

minūte (00..59)

p

vietējā AM vai PM

r

laiks, 12 stundas (hh: mm: ss AP M)

S

otrais (00..61)

T

laiks, 24 stundas (hh: mm: ss)

X

vietējās laika reprezentācija (H: M: S)

Z

laika joslu (piemēram, EDT) vai neko, ja nav laika zonas nosakāmas

Datuma lauki:

a

vietnes saīsinātais nedēļas nosaukums (Sun..Sat)

A

valodas pilns nedēļas nosaukums, mainīgais garums (svētdien … sestdienā)

b

valodas saīsinātais mēneša nosaukums (Jan..Dec)

B

valodas pilna mēneša nosaukums, mainīgais garums (janvāris … decembris)

c

vietnes datums un laiks (sestd., 04. novembris, 12:02:33 EST 1989)

d

mēneša diena (01..31)

D

datums (mm / dd / gg)

h

tāpat kā b

j

gada diena (001..366)

m

mēnesis (01..12)

U

nedēļas gads ar svētdienu kā pirmā nedēļas diena (00..53)

w

nedēļas diena (0..6)

W

nedēļas gads ar pirmdienu kā pirmo nedēļas dienu (00..53)

x

valodas datuma attēlošana (mm / dd / gg)

y

pēdējie divi cipari gadā (00..99)

Y

gads (1970 …)

% b

Faila lielums 512 baitu blokos (noapaļots uz augšu).

% c

Faila pēdējais statusa maiņas laiks formātā, ko atgriež C `ctime 'funkcija.

% C k

Faila pēdējais statusa maiņas laiks formātā, kuru norādījis k , kas ir tāds pats kā% A.

% d

Faila dziļums direktoriju kokā; 0 nozīmē, ka fails ir komandrindas arguments.

% f

Faila nosaukums ir noņemts ar visiem vadošajiem direktorijiem (tikai pēdējais elements).

% F

Failu sistēmas tips ir ieslēgts; šo vērtību var izmantot -fstype.

% g

Faila grupas nosaukums vai ciparu grupas ID, ja grupai nav nosaukuma.

% G

Faila ciparu grupas ID.

% h

Vadošie faila nosaukumu katalogi (visi, izņemot pēdējo elementu).

% H

Komandrindas arguments, saskaņā ar kuru fails tika atrasts.

% i

Faila inode numurs (decimālā).

% k

Faila lielums 1K blokos (noapaļots uz augšu).

% l

Simboliskās saites objekts (tukša virkne, ja fails nav simboliska saite).

% m

Faila atļaujas biti (oktēlā).

% n

Cieto saišu skaits failā.

% p

Faila nosaukums.

% P

Faila nosaukums ar komandrindas argumenta nosaukumu, saskaņā ar kuru tika atrasts noņemts.

% s

Faila lielums baitos.

% t

Faila pēdējā modifikācijas laiks formātā, ko atgriež C `ctime 'funkcija.

% T k

Faila pēdējā modifikācijas laiks formātā, kuru norādījis k , kas ir tāds pats kā% A.

% u

Faila lietotāja vārds vai ciparu lietotāja ID, ja lietotājam nav nosaukuma.

% U

Faila ciparu lietotāja ID.

`% 'Raksturs, kam seko jebkurš cits raksturs, tiek noraidīts (bet otrais raksturs tiek izdrukāts).

-krūna

Ja -depth netiek dota, patiesa; nesaņemiet pašreizējo direktoriju.Ja -depth tiek dota, nepatiesa; nav ietekmes.

-l

Taisnība; saraksta pašreizējo failu `ls -dils 'formātā uz standarta izvadi. Bloku skaitam ir 1K bloki, ja vien nav iestatīts vides modulis POSIXLY_CORRECT, tādā gadījumā tiek izmantoti 512 baitu bloki.

Operatori

Uzskaitīti prioritātes samazinājuma secībā:

( expr )

Spēku prioritāte.

! expr

Taisnība, ja expr ir nepatiess

-not expr

Tāds pats kā ! expr .

expr1 expr2

Un (netieši); expr2 netiek vērtēts, ja expr1 ir nepatiess

expr1 -a expr2

Tāds pats kā expr1 expr2 .

expr1 -un expr2

Tāds pats kā expr1 expr2 .

expr1 -o expr2

Vai; expr2 netiek vērtēts, ja expr1 ir patiess.

expr1 vai expr2

Tāds pats kā expr1 -o expr2 .

expr1 , expr2

Saraksts; abi expr1 un expr2 vienmēr tiek vērtēti. Vērtība expr1 tiek izmesti; saraksta vērtība ir vērtība expr2 .

Piemēri

atrast / home-user joe

Atrodiet katru failu zem direktora / mājas, kas pieder lietotājam joe.

find / usr -name * stat

Atrodiet visus failus zem direktorijas / usr, kas beidzas ar .stat.

atrast / var / spool-mtime +60

Atrodiet visus failus katalogā / var / spool, kas tika modificēts vairāk nekā pirms 60 dienām.

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

Atrodiet failus ar nosaukumukodols katalogā vai zem tā/ tmp un izdzēsiet tos.Ņemiet vērā, ka tas nedarbosies pareizi, ja ir kādi faila nosaukumi, kas satur jaunās līnijas, viena vai divas kotācijas vai atstarpes.

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

Atrodiet failus ar nosaukumukodols katalogā vai zem tā/ tmp un izdzēsiet tos, apstrādājot failu nosaukumus tādā veidā, ka pareizi tiek apstrādāti faila vai direktoriju nosaukumi, kas satur vienu vai divas pēdiņas, atstarpes vai jaunās līnijas. The-vārds tests nāk pirmstipa testu, lai izvairītos no zvanastat (2) par katru failu.

atrast -type f -exec fails "{} ';

Palaiž `failu 'uz katru failu pašreizējā direktorijā vai zem tā. Ievērojiet, ka bikšturi ir ietverti vienā ciparu atzīmē, lai tos pasargātu no interpretācijas kā čaulas skriptu pieturzīmes. Punkti tiek aizsargāti ar līdzīgu slīpsvītru, lai gan ";" varēja izmantot arī šajā gadījumā.

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

Tikai vienu reizi šķērsot failu sistēmu, iekļaujot setuid failus un direktorijus/root/suid.txt un lieli faili/root/big.txt.

atrast $ HOME-mtime 0

Meklējiet failus savā mājas direktorijā, kas ir mainīti pēdējo divdesmit četru stundu laikā. Šī komanda darbojas šādā veidā, jo laiks, kad katrs fails tika pēdējoreiz modificēts, tiek dalīts ar 24 stundām, bet atlikums tiek noraidīts. Tas nozīmē, ka saskaņot-m laiks

0, failam pagātnē būs jāmaina izmaiņas, kas ir mazāk nekā pirms 24 stundām.

atrast 664 mēnesis

Meklējiet failus, kuriem ir īpašnieku un grupu lasīšanas un rakstīšanas atļauja, bet kurus citi lietotāji var lasīt, bet ne rakstīt. Faili, kas atbilst šiem kritērijiem, bet kuriem ir noteikti citi atļaujas biti (piemēram, ja kāds var izpildīt failu), netiks saskaņoti.

atrast -perms -664

Meklējiet failus, kuriem ir lasīšanas un rakstīšanas atļauja to īpašniekam un grupai un kurus citi lietotāji var lasīt, neņemot vērā papildu atļauju bitu (piemēram, izpildāmā bits) esamību. Tas atbilst failam, kas, piemēram, ir režīms 0777.

atrast -perm / 222

Meklēt failus, kurus var rakstīt kāds (viņu īpašnieks vai viņu grupa vai kāds cits).

atrast -perms / 220 atrast -perm / u + w, g + w atrast -perm / u = w, g = w

Visas trīs šīs komandas dara to pašu, bet pirmais izmanto faila režīma astoņu simbolu attēlojumu, bet pārējie divi izmanto simbolisko formu. Visas šīs komandas meklē failus, kurus var ierakstīt to īpašnieks vai viņu grupa. Failiem nav jābūt rakstāmiem gan īpašniekam, gan grupai, kas ir jāsaskaņo; vai nu darīs.

atrast -perm -220 atrast -perm -g + w, u + w

Abas šīs komandas dara to pašu; meklējiet failus, kurus var rakstīt gan viņu īpašnieks, gan viņu grupa.

atrast -maids -444-perms / 222! -perms / 111 atrast -perm -a + r -perm / a + w! -perm / a + x

Šīs divas komandas meklē gan failus, kas ir lasāmi visiem (-perm -444 vai -perm -a + r), ir vismaz rakstīšanas bitu kopas (-perm / 222 vai -perm / a + w), bet nav izpildāmi ikvienam (! -perm / 111 un! -perm / a + x attiecīgi)

Svarīgs: Izmantojiet cilvēks komanda ( % cilvēks ), lai redzētu, kā komanda tiek izmantota jūsu konkrētajā datorā.