Izmantojot Linux un Unix komandu: atrast

Linux un Unix komandu atrašana izpilda failu meklēšanu direktoriju hierarhijā.

Sintakse atrast komandu:

atrast [ceļš ...] [izteiksme]

Apraksts

Šī rokasgrāmata dokumentē GNU versijas atradi . Roku meklēšana meklē kataloga koku, kas sakņojas katrā konkrētajā faila nosaukumā, vērtējot attiecīgo izteiksmi no kreisās uz labo, saskaņā ar prioritātes noteikumiem (skatīt sadaļu Operatori zemāk), līdz rezultāts ir zināms; citiem vārdiem sakot, kreisajā pusē ir nepatiesa vērtība un operācijas, kas attiecas uz vai , kurā brīdī atrast nākamo faila nosaukumu.

Pirmais arguments, kas sākas ar:

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, tiek izmantots izteiciens -prints .

Atrašanas komanda iziet ar statusu 0, ja visi faili tiek veiksmīgi apstrādāti, ja ir kļūdas.

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 tiek pieņemts, ja operators ir izlaists. Ja izteiksmē nav citu darbību kā -prune , tad -print 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 Izmēģiniet laikus (piemēram, -min, -atime, -cmin, -ctime, -mmin un -mtime ) no sākuma šodien, nevis no pirms 24 stundām.
-depth Katra direktorija satura apstrāde pirms paša direktora.
-nākamais Dereference simboliskās saites. Ietekmē- nezināms .
-palīdz vai --help Izdrukājiet kopsavilkumu par komandrindas izmantojumu, lai atrastu un izietu.
-maxdepth [numurs] Nolaižot lielāko skaitu līmeņu (ne-negatīvs vesels skaitlis) no direktorijām zem komandrindas argumentiem. Vārds -maxdepth 0 nozīmē, ka komandrindas argumentiem jāpiemēro tikai testi un darbības.
-mindeft [skaits] Neizmantojiet nekādus testus vai darbības līmenī, kas ir mazāks par skaitli (ne-negatīvs vesels skaitlis). Formulējums -mindepth 1 nozīmē visu failu apstrādi, izņemot komandrindas argumentus.
-summa Nenometiet katalogus citās failu sistēmās. Alternatīvais nosaukums- xdev , lai nodrošinātu saderību ar dažām citām atrastām versijām.
-noleafs Nelietojiet optimizēt, pieņemot, ka katalogi satur 2 mazāk apakšdirektorijas nekā viņu cieto saišu skaits. *
-versija vai -versija Izdrukājiet meklēšanas versijas numuru un izejiet.
-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 apakšdirektorijās (ja tādas ir) katram ir .. ieraksts, kas ir saistīts ar šo direktoriju.

Kad meklēšana atrod direktoriju, pēc tam, kad tas ir izveidojis divus mazāk apakšdirektorijus nekā direktorijas saišu skaits, tas zina, ka pārējie direktorijā esošie ieraksti nav direktoriji ( lappušu faili direktoriju katalogā). 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 Ne vairāk kā n
-n Mazāk par n.
n Precīzi n.
-amīns n Lietojumprogramma pēdējo reizi ir pieejama pirms n minūtēm.
-newer [fails] Visbeidzot pēdējo reizi tika izmantots fails, jo failā tika mainīts. -newer ietekmē -follow tikai tad, ja -follow nāk pirms-iepriekšējā uz komandrindas.
-atmiņas n Pēdējoreiz piekļūts failam n * pirms 24 stundām.
-cmin n Faila statuss pēdējoreiz tika mainīts pirms n minūtēm.
-cnewer [fails] Faila statuss pēdējoreiz tika mainīts nesen, kad tika mainīts fails.
- cnewer -follow ietekmē tikai tad, ja pēc komandrindas tiek parādīts teksts -cnewer .
-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] Tāpat kā -vārds , taču spēle neatbilst reģistratūrai. Piemēram, modeļi * un F ?? atbilst failu nosaukumiem Foo , FOO , foo , fOo utt.
-inum n Fails ir inode n numurs.
-pītis [modelis] Tāpat 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 saiti.
-vārds [raksts] Fails ir simboliska saite, kuras saturs atbilst čaulas modelim. Meta zīmēm neārstē / vai . speciāli.
-mmin n Faila dati pēdējo reizi tika mainīti pirms n minūtēm.
-mtime n Faila dati pēdējo reizi tika 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īmi ( * ,? Un [] ) neatbilst a . bāzes nosaukuma sākumā. Lai ignorētu direktoriju un zem tā esošos failus, izmantojiet -prunu ; skatīt piemēru aprakstā -ceļš .
-newer [fails] Fails tika modificēts pavisam nesen, nevis fails . Parādzīmi -newer ietekmē -follow tikai tad, ja -follow nāk pirms- vēlāk par komandrindu.
-nouser Neviens lietotājs neatbilst faila ciparu lietotāja ID.
-grupa Neviena grupa neatbilst faila ciparu grupas ID.
-ceļš [modelis] Faila nosaukums atbilst čaulas modeļa paraugam . Meta zīmēm neārstē / vai . speciāli; tā, piemēram, atrast. -path './sr*sc izdrukās ierakstu par direktoriju ar nosaukumu ./src/misc (ja tāds ir). Lai ignorētu visu kataloga koku, izmantojiet -prune, nevis pārbaudiet 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: atrodiet. -ceļš './src/emacs' -prune-o -print
-perm [režīms] Faila atļaujas biti ir tieši [režīms] (astotais vai simboliskais). Simboliskie režīmi izmanto izejas punktu 0 režīmu.
-perm-mods Visi faila atļaujas biti [režīms] ir iestatīti.
-perm + režīms Jebkurš no faila atļaujas bitiem [režīms] ir iestatīts.
-regex [modelis] Faila nosaukums atbilst regulāro izteiksmju veidam . Tas ir spēles visā ceļš, nevis meklēšana. Piemēram, lai saskaņotu failu ar nosaukumu ./fubar3, varat izmantot regulāro izteiksmi *. vai . * b. * 3 , bet ne b. * r3 .
-size n [bckw] Fails izmanto n vietas vienības. Ierīces pēc noklusējuma ir 512 baitu bloki vai ja b nāk no n , baitu, ja c nāk no n , kilobaitos, ja k atbilst n vai 2 baitu vārdiem, ja w atbilst 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 c tipa:
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 Visbeidzot, fails tika izmantots n dienas pēc tā statusa pēdējās maiņas.
-user uname Fails pieder lietotāja unamam (atļauts izmantot skaitlisko lietotāja ID).
-piemēra c Tas pats veids kā tipam, ja vien fails nav simboliska saite. Attiecībā uz simboliskajām saitēm: ja nav norādīts tālāk, taisnība, ja fails ir saite uz c faila tipu; ja ir norādīts, ja ir c, ir taisnība, ja c ir l. Citiem vārdiem sakot, simboliskajām saitēm
-tyks pārbauda faila tipu, kuru tipa pārbaude netiek veikta.

Darbības

-exec komanda ;

Izpildīt komandu ; true, ja tiek atgriezts 0 statuss. Visi nākamie argumenti, lai atrastu, tiek uzskatīti par argumentiem komandai, līdz rodas arguments ar `; ' 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 atrast versijās. 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, -ls, bet rakstīt failā, piemēram, -fprint.

-fprint fails

Taisnība; izdrukājiet pilnu faila nosaukumu faila failā . Ja fails nepastāv, kad tiek atvērts meklētājs, tas tiek 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 failu kā -fprint.

-fprintf faila formāts

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

-ok 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, kuros ir jaunās līnijas, pareizi interpretēt programmās, kas apstrādā atrades izvadi.

-printf formāts

Taisnība; drukāšanas formāts uz standarta izvadi, interpretējot `\ 'aizbēgumus un`%' direktīvās. 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ā, ko norādījis k , kas ir vai nu `@ ', vai arī funkcija C strftime. Iespējamās k vērtības ir norādītas 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 josla (piem., EDT) vai nekas, 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ā, ko 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ējais modifikācijas laiks formātā, kuru norādījis k , kas ir tāds pats kā% A failam.

% 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

True, ja expr ir false.

-nav EXPR

Tāds pats kā ! expr .

expr1 expr2

Un (netieši); expr2 nav novērtēts, ja expr1 ir false.

expr1 -a expr2

Tas pats, kas expr1 expr2 .

expr1 un expr2

Tas pats, kas expr1 expr2 .

expr1 -o expr2

Vai; expr2 nav novērtēts, ja expr1 ir taisnība.

expr1 vai expr2

Tas pats, kas expr1 -o expr2 .

expr1 , expr2

Saraksts; gan expr1, gan expr2 vienmēr tiek vērtēti. Expr1 vērtība tiek noraidīta; saraksta vērtība ir expr2 vērtība.

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 nosaukumu galvenajā direktorijā vai zem tās / 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 nosaukumu galvenajā direktorijā vai zem tās / tmp un izdzēsiet tos, apstrādājot failu nosaukumus tādā veidā, ka tiek pareizi apstrādāti faila vai direktoriju nosaukumi, kas satur vienu vai divas pēdiņas, atstarpes vai jaunās līnijas. Vārda pārbaude notiek pirms tipa pārbaudes, lai izvairītos no tā, ka katram failam jāizsauc stat (2) .

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 šķērsojiet failu sistēmu, iekļaujot setuid failus un direktorijus failā /root/suid.txt un lielos failus uz /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 jāsaskaņo -mtime

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 -perm / 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! -perm / 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īgi: izmantojiet vīriešu komandu ( % man ), lai redzētu, kā komanda tiek izmantota jūsu konkrētajā datorā.