Uzante la Linukso kaj Unikso-Komandon: trovos

La komando Linukso kaj Unikso troviĝas serĉi dosierojn en dosieruja hierarkio.

Sintakso por trovi komandon:

Trovi [vojon ...] [esprimo]

Priskribo

Ĉi tiu manlibro dokumentas la GNU-version de trovo . La komando serĉu serĉi la dosierujon arboradikigitan ĉe ĉiu donita nomo, taksante la esprimitan esprimon de maldekstra al dekstra, laŭ la reguloj de precedenco (vidu sekcion sur Funkciistoj sube), ĝis la rezulto estas konata; alivorte, la maldekstra flanko estas falsa por kaj operacioj, vera por , ĉe kiu punkto trovi movojn al la sekva nomo.

La unua argumento, kiu komenciĝas per:

estas prenita kiel la komenco de la esprimo; iuj argumentoj antaŭ ol ĝi estas vojoj por serĉi, kaj iuj argumentoj post ĝi estas la resto de la esprimo. Se neniu paŝo estas donita, la nuna dosierujo estas uzata. Se neniu esprimo estas donita, la esprimo -print estas uzata.

La komando troviĝas eliroj kun statuso 0 se ĉiuj dosieroj estas sukcesitaj, pli grandaj ol 0, se okazas eraroj.

Esprimoj

La esprimo konsistas el ebloj (kiuj influas ĝeneralan operacion prefere ol la prilaborado de specifa dosiero kaj ĉiam revenas vera), provoj (kiuj redonas veran aŭ falsan valoron), kaj agojn (kiuj havas kromefikojn kaj redonas veran aŭ falsa valoro), ĉiuj apartaj de telefonistoj. La esprimo - kaj estas supozita, kie la operatoro estas preterlasita. Se la esprimo enhavas neniun agon krom -prune , tiam -print estas farita en ĉiuj dosieroj, por kiuj la esprimo estas vera.

Opcioj

Ĉiuj opcioj ĉiam revenas veraj. Ili ĉiam efikas, prefere ol esti procesitaj nur kiam ilia loko en la esprimo estas atingita. Tial, por klareco, estas pli bone meti ilin ĉe la komenco de la esprimo.

-daystart Mezuri tempojn (por -amin, -atime, -cmin, -ctime, -mmin, kaj -mtime ) de la komenco de hodiaŭ prefere ol antaŭ 24 horoj.
-dep Procesu la enhavon de ĉiu adresujo antaŭ la dosierujo mem.
-kaj Elekto simbolaj ligoj. Implikas - ne .
-helpo aŭ - helpo Printu resumon de la komandlinia uzado de trovi kaj eliri.
-maxdepta [nombro] Descendu plej multajn nivelojn (ne negativan entjeron) de dosierujoj sub la komandliniaj argumentoj. La esprimo -maxdepto 0 signifas nur apliki la provojn kaj agojn al la komandliniaj argumentoj.
-mindepta [nombro] Ne apliki provojn aŭ agojn ĉe niveloj malpli ol la nombro (ne negativa entjero). La esprimo -mindepth 1 signifas procesi ĉiujn dosierojn krom la komandliniaj argumentoj.
-monto Ne malsupreniru dosierujojn sur aliaj dosieraj sistemoj. Alterna nomo por -xdev , por kongruo kun iuj aliaj versioj de trovo .
-noleaf Ne optimizu supozante, ke dosierujoj enhavas 2 malpli da subdosierujoj ol ilia malmola ligo-kalkulo. *
-versio--versio Printu la serĉan numeron kaj eliron.
-xdev Ne malsupreniru dosierujojn sur aliaj dosieraj sistemoj.

* Ĉi tiu opcio estas necesa kiam vi serĉas sistemajn sistemojn, kiuj ne sekvas la Uniksa dosierujon-konvencion, kiel ekzemple sistemoj de dosieroj de KD-ROM aŭ MS-DOS aŭ AFS-volumaj punktoj. Ĉiu dosierujo en normala Unikso-dosieristemo havas almenaŭ 2 malmolajn ligojn: ĝia nomo kaj ĝia . (periodo) eniro. Aldone, ĝiaj subdosierujoj (se iu ajn) havas eniron eniron al tiu dosierujo.

Kiam troveblas ekzameni dosierujon, post kiam ĝi streĉis du malpli da subdosierujoj ol la ligilo-kalkulo de la dosierujo, ĝi scias, ke la resto de la enaj dosierujoj estas ne-adresaroj ( foliaj dosieroj en la dosierujo). Se nur la nomoj de la dosieroj devas esti ekzamenitaj, ne necesas stati ilin; ĉi tio donas signifan pliigon en la rapida serĉo.

Provoj

Nombraj argumentoj povas esti specifitaj kiel:

+ n Por pli granda ol n.
-n Por malpli ol n.
n Por ĝuste n.
-amin n File estis laste alirita n antaŭ minutoj.
-anewer [dosiero] File estis laste alirita pli lastatempe ol dosiero estis modifita. -anewer estas tuŝita de -pluu nur se -paco venas antaŭ-mankas sur la komandlinio.
-atime n Arkivo estis laste alirita n * antaŭ 24 horoj.
-cmin n La statuso de la dosiero estis laste ŝanĝita n minutojn.
-kligu [dosiero] La statuso de la dosiero estis laste ŝanĝita pli lastatempe ol la dosiero estis modifita.
- cnewer estas tuŝita de -fluu nur se - sekve venas antaŭ -kuliĝi sur la komandlinio.
-time n La statuso de dosiero estis laste ŝanĝita n * antaŭ 24 horoj.
-empty Dosiero estas malplena kaj estas aŭ regula dosierujo aŭ dosierujo.
-pero Ĉiam falsa.
-fstipo [tipo] Dosiero estas sur dosieristemo de specifa tipo. La validaj dosieraj sistemoj varias inter malsamaj versioj de Unikso; nekompleta listo de dosieraj tipoj akceptitaj en iu versio de Unikso aŭ alia estas: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Vi povas uzi -printi kun la% F-directiva por vidi la tipojn de viaj dosierujoj.
-gid n La nombra grupo ID de dosiero estas n .
grupa [gname] Dosiero apartenas al grupa gname (nombra grupo ID permesita).
-ilnomo [ŝablono] Ŝati -lnomo, sed la matĉo estas kazema sensenca.
-inamo [ŝablono] Kiel -nomo , sed la matĉo estas kazema sensenca. Ekzemple, la mastroj fo * kaj F ?? kongruas kun la dosiernomoj Foo , FOO , foo , fOo , ktp.
-inum n Dosiero havas inode nombro n .
-ipat [ŝablono] Kiel -path , sed la matĉo estas kazema sensenca.
-iregex [ŝablono] Ŝati -regex, sed la matĉo estas kazema sensenca.
-linkoj n Dosiero havas ligojn.
-lomo [ŝablono] Dosiero estas simbola ligo kies enhavo kongruas ŝelo-ŝablono. La metacoj ne traktas /. speciale.
-mmin n La datumoj de dosiero estis laste modifitaj n antaŭ minutoj.
-moje n La datumoj de dosiero estis laste modifitaj n * antaŭ 24 horoj.
-nomo [ŝablono] Bazo de dosiernomo (la vojo kun la ĉefaj dosierujoj forigitaj) kongruas kun ŝablono. La metachaktoroj ( * , ? , Kaj [] ) ne kongruas al . ĉe la komenco de la baza nomo. Por ignori dosierujon kaj la dosierojn sub ĝi, uzu -prune ; vidu ekzemplon en la priskribo de -path .
ne malpli [dosiero] Dosiero estis modifita pli ĵus ol dosiero . La esprimo - ne estas tuŝita de - sekve nur se - sekve venas antaŭ-ne plu en la komandlinio.
-nuna Neniu uzanto respondas al la nombra uzanto-ID de la dosiero.
-ĉambro Neniu grupo respondas al la nombra grupo ID de la dosiero.
-pat [ŝablono] Dosiera nomo kongruas kun ŝablono- ŝablono . La metacoj ne traktas /. speciale; Do, ekzemple, trovi. -path './sr*sc presos eniron por dosierujo nomita ./src/misc (se ekzistas). Por ignori tutan dosierujon, uzu - prefere ol kontrolanta ĉiun dosieron en la arbo. Ekzemple, forgesi la dosierujon src / emacs kaj ĉiujn dosierojn kaj dosierujojn sub ĝi, kaj presi la nomojn de la aliaj trovitaj dosieroj, faru ion kiel ĉi: trovi. -path './src/emacs' -prune -o -print
-perm [mode] La bitodoj de dosiero estas precize [modo] (okaj aŭ simbolaj). Simbolaj modoj uzas modon 0 kiel punkto de foriro.
-perm-modo Ĉiuj permesoj bits [mode] estas agorditaj por la dosiero.
-perm + reĝimo Ajna el la permesaj bitoj [mode] estas agorditaj por la dosiero.
-regex [ŝablono] Dosiera nomo kongruas kun regula esprimo- ŝablono . Ĉi tio estas matĉo sur la tuta vojo, ne serĉo. Ekzemple, por kunigi dosieron nomitan ./fubar3, vi povas uzi la regula esprimo . * Trinkejo.. * b. * 3 , sed ne b. * r3 .
-size n [bckw] Dosiero uzas n- unuojn de spaco. La unuoj estas 512-bajaj blokoj defaŭlte aŭ se b sekvas n , bytes se c sekvas n , kilobytes se k sekvas n , aŭ 2-byte vortojn se w sekvas n . La grandeco ne kalkulas nerektajn blokojn, sed ĝi kalkulas blokojn en senpagaj dosieroj, kiuj ne estas fakte asignitaj.
-true Ĉiam vera.
-speco c Dosiero estas de tipo c :
b Bloko (bufro) speciala
c Karaktero (unbuffered) speciala
d Dosierujo
p Nomata tubaro (FIFO)
f Regula dosiero
l Simpla ligo
s Socket
D pordo (Solaris)
-uid n La nombra uzanto-ID de dosiero estas n .
- uzata n Dosiero estis laste alirita n tagojn post kiam ĝia statuso estis laste ŝanĝita.
-ĉerpi unamon Dosiero estas posedata de uzanto uname (nombra uzanto-ID permesita).
-kapti c La sama kiel -speco krom se la dosiero estas simbola ligo. Por simbolaj ligoj: se -follow ne estis donita, vera se la dosiero estas ligo al dosiero de tipo c ; se - sekve estas donita, vera se c estas l. Alivorte, por simbolaj ligoj,
-kludu kontrolas la tipon de la dosiero, kiun -peco ne kontrolas.

Agoj

-exekkomando;

Ekzekuti komandon ; vera se 0 statuso estas redonita. Ĉiuj sekvaj argumentoj troviĝas kiel argumentoj al la komando ĝis argumento konsistanta el ';' estas renkontita. La ĉeno `{} 'estas anstataŭigita per la nuna dosiernomo prilaborita ĉie ĝi okazas en la argumentoj al la komando, ne nur en argumentoj, kie ĝi estas sola, kiel en iuj versioj de trovo . Ambaŭ ĉi tiuj konstruoj eble devas eskapi (kun `\ ') aŭ cititaj por protekti ilin de ekspansio per la ŝelo. La komando estas ekzekutita en la komenca dosierujo.

-fls- dosiero

Vera; Kiel -ls sed skribi dosieron kiel -printita.

-programa dosiero

Vera; presi la plenan dosiernomon en dosieron- dosieron . Se dosiero ne ekzistas, kiam oni trovas , ĝi estas kreita; se ĝi ekzistas, ĝi estas detranĉita. La dosieroj nomiĝas `` / dev / stdout '' kaj `` / dev / stderr '' estas speciale manipulitaj; ili raportas al la norma eligo kaj norma erara eligo, respektive.

-fprint0- dosiero

Vera; kiel -print0 sed skribu dosieron kiel -printon.

-fprintf- dosierformato

Vera; kiel -printf sed skribu dosieron kiel -printita.

-okkomando;

Ŝati -exec sed demandu la uzanton unue (sur la norma enigo); se la respondo ne komenciĝas per `y 'aŭ' Y ', ne kuru la komandon kaj revenu falsa.

-print

Vera; presi la plenan dosiernomon sur la norma eligo, sekvita de nova linio.

-print0

Vera; presi la plenan dosiernomon sur la norma eligo, sekvita de nula karaktero. Ĉi tio permesas dosierajn nomojn, kiuj enhavas novliniojn esti ĝuste interpretitaj per programoj, kiuj procesas la serĉon.

-printf- formato

Vera; presi formato sur la norma eligo, interpretante `\ 'eskapojn kaj`%' direktricojn. Kampoj larĝaj kaj precizecoj povas esti specifitaj kiel kun la 'printf' C funkcio. Kontraste -print, -printf ne aldonas novan linion ĉe la fino de la kordo. La eskapoj kaj direktoroj estas:

\ a

Alarma sonorilo.

\ b

Malantaŭa.

\ c

Ĉesu presi de ĉi tiu formato tuj kaj forpuŝi la eliron.

\ f

Formularo manĝu.

\ n

Newline.

\ r

Reveno de veturilo.

\ t

Horizontala langeto.

\ v

Vertikala pestaña.

\\

Laŭvorta backslash (`\ ').

\ NNN

La karaktero kies ASCII-kodo estas NNN (octala).

Karaktero sekvata de iu alia karaktero estas traktita kiel ordinara karaktero, do ili ambaŭ estas presitaj.

%%

Laŭvorta procento signo.

% a

La lasta tempo de aliro de dosiero en la formato revenita de la funkcio C 'ctime'.

% Al k

La lasta tempo de aliro de dosiero en la formato specifita per k , kiu estas aŭ '@' aŭ direktoro por la 'strftime' funkcio de C. La eblaj valoroj por k estas listigitaj sube; iuj el ili eble ne estas haveblaj en ĉiuj sistemoj, pro diferencoj en 'strftime' inter sistemoj.

@ @

sekundoj ekde januaro 1, 1970, 00:00 GMT.

Tempoj kampoj:

H

horo (00..23)

Mi

horo (01..12)

k

horo (0..23)

l

horo (1..12)

M

minuto (00..59)

p

AM aŭ PM de la loko

r

tempo, 12 horoj (hh: mm: ss [AP] M)

S

dua (00..61)

T

tempo, 24 horoj (hh: mm: ss)

10a

loka tempo-reprezento (H: M: S)

Z

tempa zono (ekz., EDT), aŭ nenio se neniu tempa zono estas determinebla

Datoj kampoj:

a

La mallongigita nomo de la labortago de la loko (Sun.Sat)

A

Loko de plena labortago, varianta longeco (dimanĉo ... Sveda)

b

La nomo de mallongigita monato de Januaro (Jan.Dec)

B

Loko de plena monato, varianta longeco (Januaro ... Decembro)

c

dato kaj tempo de lokalejo (Sat Nov 04 12:02:33 EST 1989)

d

tago de monato (01..31)

D

dato (mm / dd / yy)

h

same kiel b

j

tago de jaro (001..366)

m

monato (01..12)

U

Semajno numero de jaro kun dimanĉo kiel unua tago de semajno (00..53)

w

tago de semajno (0..6)

W

Semajno nombro de jaro kun lundo kiel unua tago de semajno (00..53)

x

loka dato-prezento (mm / dd / yy)

kaj

lastaj du ciferoj de jaro (00..99)

Kaj

jaro (1970 ...)

% b

Grandeco de dosiero en 512-byte blokoj (rondigita).

% c

La lasta ŝanĝiĝema tempo de dosiero en la formato revenita de la funkcio C 'ctime'.

% C k

La lasta ŝanĝiĝema tempo de dosiero en la formato specifita de k , kiu estas la sama kiel% A.

% d

Dosiero profundo en la dosierujo arbo; 0 signifas, ke la dosiero estas komandlinia argumento.

% f

Dosiero de nomo kun iuj ĉefaj dosierujoj forigitaj (nur la lasta elemento).

% F

Tipo de la dosieristemo sur la dosiero; Ĉi tiu valoro povas esti uzata por -fstipo.

% g

Dosiera nomo, aŭ nombra grupo ID se la grupo havas neniun nomon.

% G

Dosiera nombra grupo ID.

% h

Gvidantaj dosierujoj de la nomo de la dosiero (ĉiuj sed la lasta elemento).

% H

Komandlinia argumento sub kiu dosiero estis trovita.

% i

Dosiero-inode-nombro (en dekuma).

% k

Dosiera grandeco en 1K blokoj (rondigita).

% l

Objekto de simbola ligo (malplena ĉeno se dosiero ne estas simbola ligo).

% m

Dosieraj permesoj (en octalo).

% n

Nombro da malmolaj ligiloj al dosiero.

% p

Dosiera nomo.

% P

Dosiera nomo kun la nomo de la komandlinia argumento sub kiu ĝi estis trovita forigita.

% s

Dosiera grandeco en bajtoj.

% t

La lasta modifo de dosiero en la formato revenita de la funkcio C 'ctime'.

% T k

La lasta modifo de dosiero en la formato specifita de k , kiu estas la sama kiel% A.

% u

Dosiera uzulnomo, aŭ nombra uzanto-ID se la uzanto ne havas nomon.

% U

Nombra uzanto-ID de dosiero.

Kaŝa karaktero sekvata de alia alia karaktero estas forĵetita (sed la alia karaktero estas presita).

-prune

Se -depth ne estas donita, vera; ne malsupreniru la nunan dosierujon.
Se -depth estas donita, falsa; sen efekto.

-ls

Vera; listigu la aktualan dosieron en 'ls -dils' formato sur norma eligo. La blokaj kalkuloj estas 1K blokoj, krom se la variablo de medio POSIXLY_CORRECT estas fiksita, en kies kazo oni uzas 512-bajajn blokojn.

Telefonistoj

Listita en ordo de malpliiĝanta precedenco:

( expr )

Forto de prioritato.

! expr

Vere se expr estas falsa.

-not ekskr

Same kiel! expr .

expr1 expr2

Kaj (implicita); expr2 ne estas taksita se expr1 estas falsa.

expr1 -a expr2

Same kiel expr1 expr2 .

expr1 -k kaj expr2

Same kiel expr1 expr2 .

expr1 -o expr2

Aŭ; expr2 ne estas taksita se expr1 estas vera.

expr1 -or ekspr2

Same kiel expr1 -o expr2 .

expr1 , expr2

Listo; ambaŭ expr1 kaj expr2 estas ĉiam taksataj. La valoro de expr1 estas forĵetita; La valoro de la listo estas la valoro de expr2 .

Ekzemploj

Trovu / Hejmpaĝo-uzanto

Trovu ĉiun dosieron sub la dosierujo / hejmo posedata de la uzanto joe.

trovi / usr-nomon * stat

Trovu ĉiun dosieron sub la dosierujo / usr finante ".stat".

Trovu / var / spool -mtime +60

Trovu ĉiun dosieron sub la dosierujo / var / spool kiu estis modifita pli ol 60 tagoj.

Trovu / tmp-nomo kerno -peco f -print | xargs / bin / rm -f

Trovu dosierojn nomata kerno en aŭ sub la dosierujo / tmp kaj forviŝi ilin. Rimarku, ke ĉi tio funkcios malĝuste se ekzistas iuj dosiernomoj kun novaj linioj, unuopaĵoj aŭ duoblaj citaĵoj aŭ spacoj.

Trovu / tmp-nomon kerno -peco f -print0 | xargs -0 / bin / rm -f

Trovu dosierojn, nomatajn kernojn en aŭ sub la dosierujo / tmp kaj forviŝi ilin, prilabori dosiernomojn tiel ke dosieroj aŭ dosierujoj enhavantaj unuopaĵojn aŭ duoblajn citaĵojn, spacojn aŭ liniojn estas ĝuste manipulitaj. La -nomo- provo venas antaŭ la -pekta testo por eviti devi nomi stat (2) en ĉiu dosiero.

Trovu. -type f -exec-dosiero '{}' \;

Kuras 'dosieron' en ĉiu dosiero en aŭ sub la aktuala dosierujo. Rimarku, ke la krampoj estas enmetitaj en solaj citaĵoj por protekti ilin de lego kiel ŝlosila skripto-interpunkcio. La punktokomo estas same protektita per la uzo de backslash, kvankam ';' povus esti uzata ankaŭ en tiu kazo.

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

Transiru la dosieran sistemon nur unufoje, printante dosierojn kaj dosierujojn en /root/suid.txt kaj grandajn dosierojn en /root/big.txt .

Trovi $ HOME - iam 0

Serĉu dosierojn en via hejma dosierujo, kiuj estis modifitaj dum la lastaj dudek kvar horoj. Ĉi tiu komando funkcias de ĉi tiu maniero ĉar la tempo, kiam ĉiu dosiero estis laste modifita, dividiĝas per 24 horoj kaj ajna restaĵo estas forĵetita. Tio signifas, ke tio kongruas -moje

0 , dosiero devos havi modifon en la pasinteco, kiu estas malpli ol antaŭ 24 horoj.

Trovu. -perm 664

Serĉu dosierojn, kiuj legis kaj skribis permeson por sia posedanto kaj grupo, sed kiun aliaj uzantoj povas legi sed ne skribi al. Dosieroj, kiuj renkontas ĉi tiujn kriteriojn, sed havas aliajn permesojn, kiuj estas agorditaj (ekzemple se iu povas ekzekuti la dosieron) ne estos egalitaj.

Trovu. -perm -664

Serĉu dosierojn, kiuj legis kaj skribis permeson por sia posedanto kaj grupo, kaj kiujn aliaj uzantoj povas legi, sen konsideri la ĉeeston de iuj kromaj permesoj (ekzemple la ejektivebla bito). Ĉi tio kongruos dosieron, kiu havas modon 0777, ekzemple.

Trovu. -perm / 222

Serĉu dosierojn, kiuj estas skribeblaj de iu (ilia posedanto, aŭ ilia grupo, aŭ iu ajn alia).

Trovu. -perm / 220 trovi. -perm / u + w, g + w troveblas. -perm / u = w, g = w

Ĉiuj tri ĉi tiuj komandoj faras la saman aferon, sed la unua uzas la okan reprezentadon de la dosiero, kaj la aliaj uzas la simbola formo. Ĉi tiuj komandoj ĉiuj serĉas dosierojn, kiuj estas skribeblaj per sia posedanto aŭ grupo. La dosieroj ne devas esti skribeblaj per ambaŭ la posedanto kaj grupo esti egalitaj; ĉu faros.

Trovu. -perm -220 trovi. -perm -g + w, u + w

Ambaŭ ĉi tiuj komandoj faras la saman aferon; serĉu dosierojn, kiuj estas skribeblaj per sia posedanto kaj kun ilia grupo.

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

Ĉi tiuj du ordonoj ambaŭ serĉas dosierojn, kiuj estas legeblaj por ĉiuj (-perm -444 aŭ -perm -a + r), almenaŭ skribas bito-aranĝon (-perm / 222 aŭ -perm / a + w) sed ne estas ekzekuteblaj por iu ajn (! -perm / 111 kaj! -perm / a + x respektive)

Grava: Uzu la komandon ( % viro ) por vidi kiel komando estas uzata en via komputilo.