Gebruik die Linux- en Unix-opdrag: vind

Die Linux en Unix opdrag vind 'n soektog na lêers in 'n gidshiërargie.

Sintaksis vir vind opdrag:

vind [pad ...] [uitdrukking]

beskrywing

Hierdie handleiding bladsy dokumenteer die GNU weergawe van vind . Die opdrag soek die katalogusboom wat op elke gegewe lêernaam gewortel word, deur die gegewe uitdrukking van links na regs te evalueer, volgens die voorrangsreëls (sien die gedeelte oor Operateurs hieronder) tot die uitslag bekend is. Met ander woorde, die linkerkant is vals en bedrywighede, waar of vir watter punt vind jy na die volgende lêernaam.

Die eerste argument wat begin met:

word beskou as die begin van die uitdrukking; enige argumente voordat dit is paaie om te soek, en enige argumente na dit is die res van die uitdrukking. As daar geen paaie gegee word nie, word die huidige gids gebruik. As geen uitdrukking gegee word nie, word die uitdrukking -druk gebruik.

Die vind opdrag verlaat met status 0 as alle lêers suksesvol verwerk word, groter as 0 indien foute voorkom.

uitdrukkings

Die uitdrukking bestaan ​​uit opsies (wat die algehele operasie eerder as die verwerking van 'n spesifieke lêer beïnvloed, en altyd altyd waar), toetse (wat 'n waar of onwaar waarde gee) en aksies (wat newe-effekte het en 'n waar of valse waarde), almal geskei deur operateurs. Die uitdrukking - en word aanvaar waar die operateur weggelaat word. As die uitdrukking geen ander aksies bevat as -prune , dan word -afdruk uitgevoer op alle lêers waarvoor die uitdrukking waar is.

opsies

Alle opsies is altyd waar. Hulle tree altyd in werking, eerder as om eers verwerk te word wanneer hulle plek in die uitdrukking bereik word. Daarom is dit die beste om dit duidelik te maak aan die begin van die uitdrukking.

-daystart Meet tye (vir -amin, -tyd, -min, -tyd, -myn en -tyd ) vanaf die begin van vandag eerder as vanaf 24 uur gelede.
-depth Werk elke gids se inhoud voor die gids self.
-Volg Verdere simboliese skakels. Impliseer -noleaf .
-help of -help Druk 'n opsomming van die command line gebruik van vind en uitgang.
-maxdepth [nommer] Vermy hoogstens die aantal vlakke ('n nie-negatiewe integer) van directories onder die bevellyn argumente. Die uitdrukking -maxdepth 0 beteken slegs die toetse en aksies toepas op die bevellyn argumente.
-mindepth [nommer] Moet nie toetse of aksies op vlakke wat minder is as die getal ('n nie-negatiewe heelgetal) toedien nie. Die uitdrukking -mindepte 1 beteken proses alle lêers behalwe die bevellyn argumente.
-mount Moenie dopgehou op ander lêersisteme afdaal nie. 'N Alternatiewe naam vir -xdev , vir verenigbaarheid met ander weergawes van vind .
-noleaf Moenie optimaliseer deur aan te neem dat dopgehou 2 minder subdirectories bevat as hul harde skakel telling. *
-versie of - weergawe Druk die vind weergawe nommer en gaan uit.
-xdev Moenie dopgehou op ander lêersisteme afdaal nie.

* Hierdie opsie is nodig wanneer u lêerstelsels soek wat nie die Unix-gids-konvensie volg nie, soos CD-ROM of MS-DOS-lêersisteme of AFS-volume-bergpunte. Elke gids op 'n gewone Unix-lêersisteem het ten minste 2 harde skakels: sy naam en sy . (periode) inskrywing. Daarbenewens het sy subdirectories (indien enige) elk 'n .. inskrywing gekoppel aan die gids.

As daar 'n gids is gekry, is dit duidelik dat die res van die inskrywings in die gids nie-dopgehou is ( blaarlêers in die gidsboom) nadat dit twee minder subdirectories het as die gids se koppeltelling. As slegs die name van die lêers ondersoek moet word, hoef hulle nie te statistreer nie; Dit gee 'n beduidende toename in soekspoed.

toetse

Numeriese argumente kan gespesifiseer word as:

+ N Vir groter as n.
-n Vir minder as n.
N Vir presies n.
-amin n Lêer is laas toeganklik vir ' n paar minute gelede.
-anewer [lêer] Lêer is onlangs later toegankliker as lêer is aangepas. -Ender word geraak deur -volg slegs as -volg kom voor -af op die opdraglyn.
-tyd n Lêer is laas toeganklik 24 uur gelede.
-cmin n Lêer se status is nul gelede verander.
-boodskap [lêer] Lêer se status is onlangs onlangs verander as lêer is verander.
- Cnewer word geraak deur -volg slegs as -volg kom voor -kies op die opdraglyn.
-tyd n Lêer se status is laas verander 24 uur gelede.
-empty Lêer is leeg en is óf 'n gewone lêer of 'n gids.
-onwaar Altyd vals.
-fstipe [tipe] Lêer is op 'n lêerstelsel van gespesifiseerde tipe. Die geldige lêerstelsels tipes wissel tussen verskillende weergawes van Unix; 'n onvolledige lys van lêerstelsels tipes wat aanvaar word op 'n weergawe van Unix of 'n ander is: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. U kan -printf gebruik met die% F-richtlijn om die tipes lêersystemen te sien.
-gid n Lêer se numeriese groep ID is n .
-group [gname] Lêer behoort aan groepnaam (numeriese groep ID toegelaat).
-naam [patroon] Soos -naam, maar die wedstryd is gevalleensensitief.
-iname [patroon] Soos- naam , maar die wedstryd is gevalleensensitief . Byvoorbeeld, die patrone fo * en F ?? pas by die lêername Foo , FOO , Foo , FOo , ens.
-inum n Lêer het inode nommer n .
-patroon [patroon] Soos -pad , maar die wedstryd is gevalleensensitief .
-gegex [patroon] Soos -regex, maar die wedstryd is gevalleensensitief.
-knoppies n Lêer het n skakels.
-lnaam [patroon] Lêer is 'n simboliese skakel waarvan die inhoud ooreenstem met die skulppatroon. Die meta karakters behandel nie / of . spesiaal.
-myn n Lêer se data is n paar minute gelede verander.
-mtime n Lêer se data is laas gewysig n * 24 uur gelede.
naam [patroon] Basis van lêernaam (die pad met die toonaangewende directories verwyder) stem ooreen met die doppatroon. Die meta karakters ( * , ? , En [] ) stem nie ooreen met 'n . aan die begin van die basisnaam. Om 'n gids en die lêers onder dit te ignoreer, gebruik -prune ; sien 'n voorbeeld in die beskrywing van die pad .
-werwer [lêer] Lêer is onlangs verander as lêer . Die uitdrukking -nier word beïnvloed deur -volg slegs as -volg kom voor -nie op die opdraglyn nie.
-nouser Geen gebruiker stem ooreen met die numeriese gebruikersnaam van die lêer.
-nogroup Geen groep stem ooreen met die lêer se numeriese groep ID nie.
-pad [patroon] Lêer naam pas patroon patroon patroon . Die meta karakters behandel nie / of . spesiaal; so, byvoorbeeld, vind. -pad './sr*sc druk 'n inskrywing vir 'n gids genaamd ./src/misc (as daar een bestaan). Om 'n hele gids boom te ignoreer, gebruik -prune eerder as om elke lêer in die boom te kontroleer. Byvoorbeeld, om die gids src / emacs en al die lêers en dopgehou onder dit te slaan, en druk die name van die ander lêers wat gevind is, doen so iets soos volg: vind. -pad './src/emacs' -prune -o -print
-perm [modus] Lêer se toestemmingsbisse is presies [modus] (oktaal of simbolies). Simboliese modusse gebruik modus 0 as vertrekpunt.
-perm-mode Al die toestemmingsbisse [modus] word vir die lêer gestel.
-perm + af Enige van die toestemmingsbisse [modus] word vir die lêer gestel.
-regex [patroon] Lêernaam kom ooreen met gereelde uitdrukkingspatroon. Dit is 'n wedstryd op die hele pad, nie 'n soektog nie. Byvoorbeeld, om 'n lêer met die naam ./fubar3 te pas, kan u die gewone uitdrukking gebruik . * Bar. of . * b. * 3 , maar nie b. * r3 .
-grootte n [bckw] Lêer gebruik n eenhede van die ruimte. Die eenhede is standaard 512-byte blokke of as b n volg, as c n volg, kilobiete as k n of 2-byte woorde volg as w n volg. Die grootte tel nie indirekte blokke nie, maar dit tel nie blokke in yl lêers wat nie eintlik toegeken is nie.
-true Altyd waar.
-type c Lêer is van tipe c :
b Blok (gebufferde) spesiale
c Karakter (onbemande) spesiaal
d Gids
p Benoemde pyp (EIEU)
f Gereelde lêer
l Simboliese skakel
s Socket
D deur (Solaris)
-uid n Lêer se numeriese gebruikers ID is n .
-gebruik n Lêer is laas toeganklik n dae nadat die status daarvan laas verander is.
-gebruiker uname Lêer is besit deur gebruikers uname (numeriese gebruikers ID toegelaat).
-tipe c Dieselfde as -tipe tensy die lêer 'n simboliese skakel is. Vir simboliese skakels: as -volg is nie gegee nie, waar as die lêer 'n skakel is na 'n lêer van tipe c ; as -volg is gegee, waar as c l is. Met ander woorde, vir simboliese skakels,
-tipe tik die tipe van die lêer wat -tipe nie nagaan nie.

aksies

-exec opdrag ;

Voer bevel uit ; waar as 0 status terugbesorg word. Al die volgende argumente om te vind, word beskou as argumente tot die opdrag tot 'n argument wat bestaan ​​uit `; ' word ondervind. Die string `{} 'word vervang deur die huidige lêernaam wat oral verwerk word in die argumente aan die opdrag, nie net in argumente waar dit alleen is nie, soos in sommige weergawes van vind . Albei hierdie konstruksies moet dalk ontsnap word (met 'n `'') of aangehaal om hulle te beskerm teen uitbreiding deur die dop. Die opdrag word uitgevoer in die begin gids.

-fls lêer

True, soos -l maar skryf na lêer soos -fprint.

-afdruk lêer

True, druk die volledige lêernaam in lêer lêer . As die lêer nie bestaan ​​wanneer die vind uitgevoer word, word dit geskep; as dit wel bestaan, word dit afgeknip. Die lêernaam `` / dev / stdout '' en `` / dev / stderr '' word spesiaal hanteer; hulle verwys na die standaard uitset en standaard foutuitset, onderskeidelik.

-Fprint0- lêer

True, like -print0 maar skryf na lêer soos -fprint.

-Fprintf lêer formaat

True, soos -printf, maar skryf na lêer soos -fprint.

-ok bevel ;

Soos -exec, maar vra eers die gebruiker (op die standaard invoer); As die reaksie nie begin met 'y' of 'Y' nie, voer die opdrag nie uit nie, en lewer onwaar.

-Druk

True, druk die volledige lêernaam op die standaard uitset, gevolg deur 'n nuwe lyn.

-print0

True, druk die volledige lêernaam op die standaard uitvoer, gevolg deur 'n nulkarakter. Dit laat lêername toe wat nuwe lyne bevat om korrek geïnterpreteer te word deur programme wat die soekuitset verwerk.

-printf formaat

True, drukformaat op die standaard uitvoer, interpretasie van `\ 'ontsnap en`%' riglyne. Veldbreedtes en presisies kan gespesifiseer word soos met die `printf 'C funksie. Anders as -print, -printf voeg nie 'n nuwe lyn aan die einde van die tou nie. Die ontsnapte en riglyne is:

\ n

Alarmklokkie.

\ b

Back Space.

\ c

Stop met die druk van hierdie formaat onmiddellik en spoel die uitset.

\ f

Vorm voer.

\ N

Nuwe lyn.

\ r

Vervoer terug.

\ t

Horisontale oortjie.

\ v

Vertikale blad.

\\

'N letterlike terugslag (`\').

\ NNN

Die karakter wie se ASCII-kode is NNN (oktaal).

'N `\' karakter gevolg deur enige ander karakter word as 'n gewone karakter behandel, dus word albei gedruk.

%%

'N letterlike persenteken.

% n

Lêer se laaste toegangstyd in die formaat wat deur die C `ctime'-funksie terugbesorg word.

% A k

Lêer se laaste toegangstyd in die formaat wat deur k aangedui word, wat óf `@ 'of 'n richtlijn vir die C` strftime'-funksie is. Die moontlike waardes vir k word hieronder gelys; sommige van hulle is moontlik nie beskikbaar op alle stelsels nie, as gevolg van verskille in `strftime 'tussen stelsels.

@

Sekondes sedert 1 Januarie 1970, 00:00 GMT.

Tyd velde:

H

uur (00..23)

Ek

uur (01..12)

k

uur (0..23)

l

uur (1..12)

M

minuut (00..59)

p

lokaal se AM of PM

r

tyd, 12 uur (hh: mm: ss [AP] M)

S

tweede (00..61)

T

tyd, 24 uur (hh: mm: ss)

X

lokaal se tydvoorstelling (H: M: S)

Z

tydsone (bv. EDT), of niks as geen tydsone bepaalbaar is nie

Datum velde:

'n

Lokaal se verkorte weekdag naam (Sun..Sat)

A

plek se volle weekdag naam, veranderlike lengte (Sondag .. Saterdag)

b

land se verkorte maand naam (Jan..Dec)

B

land se volle maand naam, veranderlike lengte (Januarie..Desember)

c

Plaaslike se datum en tyd (Saterdag Nov 04 12:02:33 EST 1989)

d

dag van maand (01..31)

D

datum (mm / dd / jj)

h

dieselfde as b

j

dag van jaar (001..366)

m

maand (01..12)

U

Week nommer van die jaar met Sondag as eerste dag van die week (00..53)

w

dag van die week (0..6)

W

week nommer van die jaar met Maandag as eerste dag van die week (00..53)

x

plaaslike datum se voorstelling (mm / dd / yy)

y

laaste twee syfers van die jaar (00..99)

Y

jaar (1970 ...)

% b

Lêer se grootte in 512-byte blokke (afgerond).

% c

Lêer se laaste status verander tyd in die formaat wat deur die C `ctime'-funksie teruggestuur word.

% C k

Lêer se laaste status verander tyd in die formaat wat deur k gespesifiseer word, wat dieselfde is as vir% A.

% d

Lêer se diepte in die gids boom; 0 beteken die lêer is 'n command line argument.

% f

Lêer se naam met enige voorste directories verwyder (slegs die laaste element).

% F

Tipe van die lêerstelsel waar die lêer aan is; hierdie waarde kan gebruik word vir -fstype.

% g

Lêer se groepnaam, of numeriese groep ID as die groep geen naam het nie.

% G

Lêer se numeriese groep ID.

% h

Leidende dopgehou van lêer se naam (alles behalwe die laaste element).

% H

Command line argument onder watter lêer is gevind.

% i

Lêer se inode nommer (in desimale).

% k

Lêer se grootte in 1K blokke (afgerond).

% l

Voorwerp van simboliese skakel (leë string as lêer nie 'n simboliese skakel is nie).

% m

Lêer se toestemmingsbits (in oktaal).

% n

Aantal harde skakels na lêer.

% p

Lêer se naam.

% P

Lêer se naam met die naam van die command line argument waaronder dit gevind is verwyder.

% s

Lêer se grootte in grepe.

% t

Lêer se laaste wysigingstyd in die formaat wat deur die C `ctime'-funksie teruggestuur word.

% T k

Lêer se laaste wysigingstyd in die formaat wat deur k gespesifiseer is, wat dieselfde is as vir% A.

% u

Lêer se gebruikersnaam, of numeriese gebruikers-ID as die gebruiker geen naam het nie.

% U

Lêer se numeriese gebruikers ID.

'N `%' karakter gevolg deur enige ander karakter word weggegooi (maar die ander karakter word gedruk).

-prune

As -diepte nie gegee word nie, waar; moenie die huidige gids daal nie.
As -diepte gegee word, valse; geen uitwerking.

-ls

True, lys huidige lêer in `ls-dils 'formaat op standaard uitvoer. Die bloktellings is 1K blokke, tensy die omgewingsveranderlike POSIXLY_CORRECT gestel word, in welke geval 512-byte blokke gebruik word.

operateurs

Genoteer in volgorde van dalende voorrang:

( expr )

Kragvoorrang.

! Expr

Waar as expr vals is.

-nie expr

Dieselfde as ! expr .

expr1 expr2

En (geïmpliseer); expr2 word nie geëvalueer as expr1 vals is nie.

expr1 -a expr2

Dieselfde as expr1 expr2 .

expr1 en expr2

Dieselfde as expr1 expr2 .

expr1 -o expr2

of; expr2 word nie geëvalueer as expr1 waar is nie.

expr1 of expr2

Dieselfde as expr1 -o expr2 .

expr1 , expr2

lys; beide expr1 en expr2 word altyd geëvalueer. Die waarde van expr1 word weggegooi; Die waarde van die lys is die waarde van expr2 .

voorbeelde

vind / tuisgebruiker joe

Vind elke lêer onder die gids / huis in besit van die gebruiker joe.

vind / usr-naam * stat

Vind elke lêer onder die gids / usr wat eindig in ".stat".

vind / var / spool -mtime +60

Vind elke lêer onder die gids / var / spool wat meer as 60 dae gelede verander is.

vind / tmp-naam kern-tipe f -print | xargs / bin / rm -f

Vind lêers met die naam kern in of onder die gids / tmp en verwyder dit. Let daarop dat dit verkeerd sal werk as daar lêername is wat nuwe lyne bevat, enkel of dubbel aanhalings of spasies.

vind / tmp-naam kern-tipe f -print0 | xargs -0 / bin / rm -f

Vind lêers met die naam kern in of onder die gids / tmp en verwyder dit, die verwerking van lêername op so 'n manier dat die lêer of gidsname wat enkel of dubbel aanhalings, spasies of nuwe lyne korrek hanteer. Die -name toets kom voor die -tipe toets om te verhoed dat stat (2) op elke lêer gebel word.

vind. -type f -exec lêer '{}' \;

Loop `lêer 'op elke lêer in of onder die huidige gids. Let daarop dat die hakies in enkelvoudige aanhalingstekens ingevul word om hulle te beskerm teen interpretasie as skildskriftitrekeninge. Die semikolon word ook beskerm deur die gebruik van 'n terugslag, alhoewel ';' kon ook in daardie geval gebruik gewees het.

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

Beweeg die lêerstelsel net een keer, stel setuid lêers en dopgehou in /root/suid.txt en groot lêers in /root/big.txt .

vind $ HOME-time 0

Soek vir lêers in u tuisgids wat in die laaste vier-en-twintig uur verander is. Hierdie opdrag werk op hierdie manier omdat die tyd sedert elke lêer laas gewysig is, gedeel word deur 24 uur en enige restant word weggegooi. Dit beteken dat dit ooreenstem met -mtime

0 , 'n lêer sal in die verlede 'n wysiging moet hê wat minder as 24 uur gelede is.

vind. -perm 664

Soek vir lêers wat lees en skryf toestemming vir hul eienaar, en groep, maar watter ander gebruikers kan lees, maar nie skryf nie. Lêers wat aan hierdie kriteria voldoen, maar ander toestemmingsbits stel (byvoorbeeld as iemand die lêer kan uitvoer) sal nie ooreenstem nie.

vind. -perm -664

Soek vir lêers wat lees en skryf toestemming vir hul eienaar en groep, en watter ander gebruikers kan lees, sonder inagneming van die teenwoordigheid van enige ekstra toestemmingsbits (byvoorbeeld die uitvoerbare bietjie). Dit sal ooreenstem met 'n lêer wat byvoorbeeld modus 0777 het.

vind. -perm / 222

Soek vir lêers wat deur iemand (hul eienaar, of hul groep, of enigiemand anders) geskryf kan word.

vind. -perm / 220 vind. -perm / u + w, g + w vind. -perm / u = w, g = w

Al drie van hierdie opdragte doen dieselfde ding, maar die eerste gebruik die oktaal voorstelling van die lêermodus, en die ander twee gebruik die simboliese vorm. Dit beveel alle soeke na lêers wat deur hul eienaar of hul groep geskryf kan word. Die lêers hoef nie geskryf te word deur beide die eienaar en groep wat ooreenstem nie; óf sal dit doen.

vind. -perm -220 vind. -perm -g + w, jy + w

Albei hierdie opdragte doen dieselfde ding; soek na lêers wat geskryf kan word deur beide hul eienaar en hul groep.

vind. -perm -444-perm / 222! -perm / 111 vind. -perm -a + r -perm / a + w! -perm / a + x

Hierdie twee instruksies soek beide vir lêers wat vir almal leesbaar is (-perm -444 of -perm -a + r), ten minste op skryfbits stel (-perm / 222 of -perm / a + w), maar is nie uitvoerbaar nie vir enige (! -perm / 111 en! -perm / a + x onderskeidelik)

Belangrik: Gebruik die man opdrag ( % man ) om te sien hoe 'n opdrag op u rekenaar gebruik word.